当前位置:   article > 正文

LeetCode:206(Python)—— 反转链表(简单)_手撕代码leetcode 206、反转链表python

手撕代码leetcode 206、反转链表python

反转链表

概述:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

  1. 输入:head = [1,2,3,4,5]
  2. 输出:[5,4,3,2,1]
  3. 输入:head = [1,2]
  4. 输出:[2,1]
  5. 输入:head = []
  6. 输出:[]

方法一:双指针

思路:首先定义一个头指针 pre,然后用当前指针 cur 指向头指针 pre,循环到 None 停止即可。

  1. # 双指针
  2. # 首先定义一个头指针 pre,然后用当前指针 cur 指向头指针 pre,
  3. # 循环到 None 停止即可。
  4. class Solution:
  5. def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
  6. pre, cur = None, head
  7. while cur:
  8. tmp = cur.next
  9. cur.next = pre
  10. pre = cur
  11. cur = tmp
  12. return pre

方法二:递归

思路:有点难理解了,也就是 head 的下一个节点指向 head,递归结束即可。

  1. # 递归
  2. # 有点难理解了,也就是 head 的下一个节点指向 head,递归结束即可。
  3. class Solution:
  4. def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
  5. if (head == None or head.next == None):
  6. return head
  7. cur = self.reverseList(head.next)
  8. head.next.next = head
  9. head.next = None
  10. return cur

总结

真的就张图拯救了我的脑子!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/209444
推荐阅读
相关标签
  

闽ICP备14008679号