反轉鏈表

方法比較簡單,使用三個指針即可

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        if head == None:
            return
        result = [None]
        self.reverseLink(head, result).next = None
        return result[0]

    def reverseLink(self, head, result):
        # 遞歸寫法
        if head.next != None:
            self.reverseLink(head.next, result).next = head
        else:
            result[0] = head
        return head

#迭代寫法
#         pre = None
#         cur = head
#         while cur:
#             temp = cur.next
#             cur.next = pre
#             pre = cur
#             cur = temp
#         return pre
    

返回要返回pre,因爲最後pre就是cur。

使用遞歸時要注意,每個函數不能在分支裏寫return,要都有return才行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章