이 글에서는 재귀와 비재귀를 사용하여 단일 체인 반전을 달성하는 방법을 설명합니다. 단일 체인 반전이 무엇인지 모르는 학생들이 많을 수 있으니, 헛소리는 그만하고 이 글을 직접 읽어보세요!
질문은 재귀 및 반복 알고리즘을 모두 사용할 수 있다는 힌트를 제공합니다.
재귀에 대한 깊은 이해가 없기 때문에 먼저 반복을 사용하여 알고리즘을 작성합니다. 질문의 헤드 노드는 데이터가 포함된 첫 번째 노드로 간주됩니다. 선두 노드를 역방향으로 순회하며, 노드 간 체인의 역전을 하나씩 순차적으로 구현합니다.
먼저 2개의 포인터를 사용하여 작업을 완료하려고 시도했지만 실패합니다
class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* pre = NULL; while(head -> next) { pre = head; head = head -> next; head -> next = pre; } return head; };
이유는 다음과 같습니다. 반전 과정에서 head -> next가 반전되어 계속해서 뒤로 이동할 수 없으므로 포인터를 추가합니다. 3개의 포인터를 사용하여 완료되었습니다.
class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* pre = NULL; while(head) { ListNode* next = head -> next; head -> next = pre;//head是尾结点,指针置空 head = next; pre = head; } return pre; //head = NULL };
작업은 재귀적으로 작동하지 않습니다. 이해하려면 토론을 참조하세요. 아이디어는 다음과 같습니다. 재귀를 통해 헤드 노드는 종료 조건(테일 노드에 도달한 후 중지)까지 계속해서 뒤로 이동합니다. 코드는 다음과 같습니다.
class Solution { public: ListNode* reverseList(ListNode* head) { //终止条件,达到尾结点停止 if(head == NULL || head ==NULL) return head; else { //头结点向后移动 ListNode* temp = reverList(head->next); head->next->next = head; //1 head->next = NULL; //2 } return temp; };
재귀 종료 조건 도달 시 표시되는 상태는 다음과 같습니다.
이전 수준의 재귀로 복귀한 후의 상태는 다음과 같습니다.
passed 코드 1과 2 두 줄을 주석 처리한 후 상태는 다음과 같습니다.
헤드 노드의 위치가 숫자와 관련이 있음을 알 수 있습니다. 반전 후의 헤드 노드인 temp는 절대 움직이지 않으므로 반전 턴 효과를 얻습니다. 재귀 코드를 이해할 수는 있지만 아직 디자인하는 방법을 모르고 여전히 멍청합니다. ㅋㅋㅋ
위 내용은 재귀와 비재귀를 이용한 단일 체인 반전에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

随着互联网的发展,SEO(SearchEngineOptimization,搜索引擎优化)已经成为了网站优化的重要一环。如果您想要使您的PHP网站在搜索引擎中获得更高的排名,就需要对SEO的内容有一定的了解了。本文将会介绍如何在PHP中实现SEO优化,内容包括网站结构优化、网页内容优化、外部链接优化,以及其他相关的优化技巧。一、网站结构优化网站结构对于S

如何反转和倒序PHP数组在PHP中,数组是一种常用的数据结构,能够存储和操作大量的数据。有时我们需要对数组进行反转或者倒序操作,以满足特定的需求。本文将介绍如何使用PHP对数组进行反转和倒序操作,并给出相应的代码示例。一、反转数组反转数组是指将数组中的元素按照原来的顺序进行相反的重新排列。PHP提供了多种方法来实现数组的反转,以下介绍两种常用的

在PHP程序设计当中,数组是一个非常常用的数据结构,通过键值对的形式,我们可以方便地访问和处理数据。然而,在某些情况下,我们需要反转数组键值的顺序,以达到更好的数据处理效果。PHP中提供了一个专门的函数,即array_reverse函数,可以非常方便地实现数组反转。接下来,本文将向读者介绍如何使用PHP中的array_reverse函数反转数组键值的顺序。一

随着企业的发展,客户管理变得越来越重要。为了提高客户满意度和忠诚度,越来越多的企业采用客户关系管理系统(CRM)来帮助其管理客户关系。而PHP是一种流行的编程语言,因其简单易学、灵活和强大而被广泛应用于Web开发。那么,如何在PHP中实现CRM系统呢?本文将为您介绍实现CRM系统的步骤和技巧。Step1:需求分析在开始开发CRM系统之前,您需要进行需求分析

随着物联网技术的发展和普及,越来越多的应用场景需要使用PHP语言进行物联网开发。PHP作为一种广泛应用于Web开发的脚本语言,它的易学易用、开发速度快、可扩展性强等特点,使其成为开发物联网应用的一种优秀选择。本文将介绍在PHP中实现物联网开发的常用技术和方法。一、传输协议和数据格式物联网设备通常使用TCP/IP或UDP协议进行数据传输,而HTTP协议是一个优

Inthisproblem,wewillperformMreversequeriesonthegivenstringaccordingtothearrayvalues.Thenaïveapproachtosolvingtheproblemistoreverseeachstringsegmentaccordingtothegivenarrayvalue.Theoptimizedapproachusesthelogicthatwhenwereversethesamesubstringtwotimes

例如,给定一个二叉搜索树,我们需要从特定键反转其路径。寻找解决方案的方法在这种方法中,我们将创建一个队列并推送所有节点,直到获得根节点。p>示例 #include<bits/stdc++.h>usingnamespacestd;structnode{ intkey; structnode*left,*right;};structnode*newNode(intitem){&nb

学习Go语言中的字典函数并实现键值对的反转字典是Go语言中非常常用的数据结构之一,它提供了一种键值对的存储方式,并且允许我们根据键快速地检索或修改对应的值。在很多实际应用中,我们可能需要对字典中的键值对进行反转操作,即将原来的键作为值,原来的值作为键。本文将介绍Go语言中字典相关函数的用法,并实现这一反转操作。首先,我们需要了解Go语言中字典的基本用法。字典


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

Dreamweaver Mac版
시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
