长大后想做什么?做回小孩!

0%

LeetCode——翻转链表

NO.206 翻转链表 简单

3R4HGn.png

本题是K个一组翻转链表这道题的其中一步,学习完本题可以趁热打铁学习NO.25,题解参考徒手挖地球十八周目

思路一:迭代实现 翻转链表需要三个”指针”:pre指向前驱、curr指向当前节点、next指向后继。

过程比较简单,自己模拟一遍就好了:

3R4b2q.png

3R47Ps.png

1
2
3
4
5
6
7
8
9
10
11
public ListNode reverseList(ListNode head) {
if (head==null||head.next==null)return head;
ListNode pre=null,curr=head;
while (curr!= null) {
ListNode next=curr.next;
curr.next=pre;
pre=curr;
curr=next;
}
return pre;
}

时间复杂度:O(n)

思路二:递归实现 每层递归返回已经翻转好的部分。

1
2
3
4
5
6
7
public ListNode reverseList(ListNode head) {
if (head==null||head.next==null)return head;
ListNode pre=reverseList(head.next);
head.next.next=head;
head.next=null;
return pre;
}

时间复杂度:O(n)


本人菜鸟,有错误请告知,感激不尽!

更多题解和学习记录博客:博客github