zoukankan      html  css  js  c++  java
  • leetcode206 Reverse Linked List

     1 """
     2 Reverse a singly linked list.
     3 Example:
     4 Input: 1->2->3->4->5->NULL
     5 Output: 5->4->3->2->1->NULL
     6 """
     7 
     8 """
     9 两种解法
    10 解法一:迭代法
    11 是先申请一个pre = None 作为尾结点
    12 cur = head 作为当前结点,end = cur.next用来存储下一个需要更新的cur的位置
    13 让当前的cur结点与pre相连cur.next = pre,并更新pre = cur, cur = end
    14 返回pre
    15 """
    16 
    17 class ListNode:
    18     def __init__(self, x):
    19         self.val = x
    20         self.next = None
    21 
    22 class Solution1:
    23     def reverseList(self, head):
    24         pre = None
    25         cur = head
    26         while cur:
    27             end = cur.next
    28             cur.next = pre
    29             pre = cur
    30             cur = end
    31         return pre
    32 
    33 """
    34 解法二:递归
    35 递归的思想:如果要倒转的链表有n个节点,
    36 那么如果第一个节点后面的n-1个节点已经正确倒转了的话,
    37 只要处理第一个和第二个节点的指向关系就可以了。
    38 要使后面n-1个节点正确倒转,那么闲要使得后面的n-2个节点正确倒转。于是接这么递归下去。
    39 最后只剩一个节点的时候,就什么都不用做了,只需要改变其与原来的上一个节点之间的关系就可以了。
    40 """
    41 class Solution2:
    42     def reverse(self, head):
    43         if head.next == None:
    44             return head
    45         p = self.reverse(head.next)
    46         head.next.next = head
    47         head.next = None
    48         return p
  • 相关阅读:
    一行代码更改博客园皮肤
    fatal: refusing to merge unrelated histories
    使用 netcat 传输大文件
    linux 命令后台运行
    .net core 使用 Nlog 配置文件
    .net core 使用 Nlog 集成 exceptionless 配置文件
    Mysql不同字符串格式的连表查询
    Mongodb between 时间范围
    VS Code 使用 Debugger for Chrome 调试vue
    css权重说明
  • 原文地址:https://www.cnblogs.com/yawenw/p/12324179.html
Copyright © 2011-2022 走看看