LeetCode.206.反轉連結串列
阿新 • • 發佈:2018-12-28
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