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
  • 相关阅读:
    liunx知识点滴积累(1)
    Regsvr32命令的使用
    QTP知识点滴积累
    LoadRunner的Apache的监控
    CMM和过程改进的“妙语” 集锦
    Linux 性能调优的几种方法
    数据库学习笔录(转载)
    Windows性能管理解析
    使用NUnit在.Net编程中进行单元测试
    Google 工程师文化 互助篇
  • 原文地址:https://www.cnblogs.com/yawenw/p/12324179.html
Copyright © 2011-2022 走看看