1. 程式人生 > >LeetCode.206.反轉連結串列

LeetCode.206.反轉連結串列

206.反轉連結串列
反轉一個單鏈表。

輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL

非遞迴解法:
1.

class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
       
        res =None
        while head!=
None: r = res #用r來儲存上一次反轉後的連結串列 res = head #res 表示反轉後的連結串列第一個節點 head = head.next #當前節點後移 res.next = r #反轉後連結串列的頭結點連結上一次的反轉後的連結串列 return res
class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
per = head res =None while per!= None: res,per,res.next = per,per.next,res return res

遞迴解法:

class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if  head == None
or head.next == None:#如果連結串列沒有節點或只有一個節點就返回本身 return head else: res = self.reverseList(head.next)#遞迴返回最後的節點 head.next.next = head#頭結點接到尾巴上 head.next = None#刪除頭結點的下一個連結 return res