当前位置:网站首页>Leetcode-206. Reverse Linked List
Leetcode-206. Reverse Linked List
2022-07-07 07:30:00 【Eistert】
subject
Given the head of a singly linked list, reverse the list, and return the reversed list.
Example 1:

Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]
Example 2:

Input: head = [1,2]
Output: [2,1]
Example 3:
Input: head = []
Output: []
Constraints:
The number of nodes in the list is the range [0, 5000].
-5000 <= Node.val <= 5000
solution
Method 1 : iteration
Suppose the linked list is 1→2→3→∅, We want to change it to ∅←1←2←3.
When traversing a linked list , Set the... Of the current node next The pointer changes to point to the previous node . Because the node does not refer to its previous node , So you have to store its previous node in advance . Before changing the reference , You also need to store the latter node . Finally, the new header reference is returned .
Code
class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
}
}
Complexity analysis
Time complexity :O(n), among nn It's the length of the list . You need to traverse the linked list once .
Spatial complexity :O(1).
Method 2 : recursive
Code
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */
class Solution {
/** * To list 1->2->3->4->5 give an example * @param head * @return */
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
/* Returns the current node until the next node of the current node is empty because 5 There is no next node , So the node is returned here 5 */
return head;
}
// Recursively pass in the next node , The purpose is to reach the last node
ListNode newHead = reverseList(head.next);
/* The first round of stack ,head by 5,head.next It's empty , return 5 The second round of stack ,head by 4,head.next by 5, perform head.next.next=head That is to say 5.next=4, Point the child nodes of the child nodes of the current node to the current node At this time, the linked list is 1->2->3->4<->5, because 4 And 5 Point to each other , So disconnect here 4.next=null At this time, the linked list is 1->2->3->4<-5 Return to node 5 The third round of stack ,head by 3,head.next by 4, perform head.next.next=head That is to say 4.next=3, At this time, the linked list is 1->2->3<->4<-5, because 3 And 4 Point to each other , So disconnect here 3.next=null At this time, the linked list is 1->2->3<-4<-5 Return to node 5 The fourth round of stack ,head by 2,head.next by 3, perform head.next.next=head That is to say 3.next=2, At this time, the linked list is 1->2<->3<-4<-5, because 2 And 3 Point to each other , So disconnect here 2.next=null At this time, the linked list is 1->2<-3<-4<-5 Return to node 5 The fifth round comes out of the stack ,head by 1,head.next by 2, perform head.next.next=head That is to say 2.next=1, At this time, the linked list is 1<->2<-3<-4<-5, because 1 And 2 Point to each other , So disconnect here 1.next=null At this time, the linked list is 1<-2<-3<-4<-5 Return to node 5 Stack out complete , Final header node 5->4->3->2->1 */
head.next.next = head;
head.next = null;
return newHead;
}
}
Complexity analysis
Time complexity :O(n), among nn It's the length of the list . You need to reverse each node of the linked list .
Spatial complexity :O(n), among nn It's the length of the list . The space complexity mainly depends on the stack space of recursive calls , At most nn layer .
source
author :LeetCode-Solution
link :https://leetcode-cn.com/problems/reverse-linked-list/solution/fan-zhuan-lian-biao-by-leetcode-solution-d1k2/
source : Power button (LeetCode)
The copyright belongs to the author . Commercial reprint please contact the author for authorization , Non-commercial reprint please indicate the source .
边栏推荐
- URP - shaders and materials - light shader lit
- 详解机器翻译任务中的BLEU
- 弹性布局(一)
- 面试官:你都了解哪些开发模型?
- Asynchronous components and suspend (in real development)
- Sqlmap tutorial (IV) practical skills three: bypass the firewall
- C language (high-level) data storage + Practice
- Software acceptance test
- Bindingexception exception (error reporting) processing
- 外包幹了三年,廢了...
猜你喜欢

Tujia, muniao, meituan... Home stay summer war will start

Project practice five fitting straight lines to obtain the center line

Robot technology innovation and practice old version outline

抽絲剝繭C語言(高階)數據的儲存+練習

FPGA course: application scenario of jesd204b (dry goods sharing)

"Xiaodeng in operation and maintenance" meets the compliance requirements of gdpr

How to reduce inventory with high concurrency on the Internet

English translation is too difficult? I wrote two translation scripts with crawler in a rage

【Liunx】进程控制和父子进程

Cloud backup project
随机推荐
After 95, the CV engineer posted the payroll and made up this. It's really fragrant
JS decorator @decorator learning notes
95后CV工程师晒出工资单,狠补了这个,真香...
PostgreSQL source code (60) transaction system summary
【Liunx】进程控制和父子进程
四、高性能 Go 语言发行版优化与落地实践 青训营笔记
关于二进制无法精确表示小数
PostgreSQL source code (59) analysis of transaction ID allocation and overflow judgment methods
I failed in the postgraduate entrance examination and couldn't get into the big factory. I feel like it's over
Kuboard无法发送邮件和钉钉告警问题解决
The currently released SKU (sales specification) information contains words that are suspected to have nothing to do with baby
弹性布局(二)
Common function detect_ image/predict
Le Service MySQL manque dans le service informatique
Circulating tumor cells - here comes abnova's solution
组件的嵌套和拆分
Build personal website based on flask
About binary cannot express decimals accurately
Détailler le bleu dans les tâches de traduction automatique
Abnova immunohistochemical service solution