当前位置:网站首页>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 .
边栏推荐
- 弹性布局(一)
- Several important steps to light up the display
- Initial experience of teambiion network disk (Alibaba cloud network disk)
- 【Liunx】进程控制和父子进程
- Outlier detection technology of time series data
- 外包干了三年,废了...
- Redis data migration
- Nesting and splitting of components
- 4、 High performance go language release optimization and landing practice youth training camp notes
- Fullgc problem analysis and solution summary
猜你喜欢
组件的嵌套和拆分
Advanced practice of C language (high level) pointer
MIPS uclibc cross compile ffmpeg, support g711a encoding and decoding
Lm11 reconstruction of K-line and construction of timing trading strategy
3、 High quality programming and performance tuning practical youth training camp notes
Convolutional neural network -- understanding of pooling
二、并发、测试笔记 青训营笔记
Le Service MySQL manque dans le service informatique
Music | cat and mouse -- classic not only plot
Release notes of JMeter version 5.5
随机推荐
js小练习----分时提醒问候、表单密码显示隐藏效果、文本框焦点事件、关闭广告
Composition API premise
Release notes of JMeter version 5.5
Pass child component to parent component
English translation is too difficult? I wrote two translation scripts with crawler in a rage
Apache AB stress test
组件的嵌套和拆分
Interviewer: what development models do you know?
点亮显示屏的几个重要步骤
URP - shaders and materials - light shader lit
How can a 35 year old programmer build a technological moat?
Chinese and English instructions prosci LAG-3 recombinant protein
Abnova immunohistochemical service solution
Abnova membrane protein lipoprotein technology and category display
外包干了三年,废了...
Precise space-time travel flow regulation system - ultra-high precision positioning system based on UWB
Dynamics CRM server deployment - restore database prompt: the database is in use
【Liunx】进程控制和父子进程
考研失败,卷不进大厂,感觉没戏了
Causes and solutions of oom (memory overflow)