【LeetCode 簡單題】56-反轉連結串列
阿新 • • 發佈:2018-11-04
宣告:
今天是第56道題。反轉一個單鏈表。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除
(手動比心ღ( ´・ᴗ・` ))
正文
題目:反轉一個單鏈表。
示例:
輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL
進階:
你可以迭代或遞迴地反轉連結串列。你能否用兩種方法解決這道題?
解法1。耗時40 ms, 在Reverse Linked List的Python提交中擊敗了42.14% 的使用者,程式碼如下。
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def reverseList(self, head): """ :type head: ListNode :rtype: ListNode """ tmp = None pre = None cur = head while cur: tmp = cur.next # 在切斷當前節點指向下一節點這個關係前,先儲存下一節點的資訊 cur.next = pre # 改變指向 pre = cur # 改變指向完畢,pre前進1個節點,進行下一次指向改變 cur = tmp # cur也前進一個節點 return pre # cur此時已經指向None了,pre指向head(也即原連結串列的tail)
結尾
解法1:Leetcode