LeetCode 反轉鍊錶(Python版本)

2021-09-18 06:56:50 字數 2277 閱讀 8258

反轉乙個單鏈表。

示例:

輸入:1->2->3->4->5->null

輸出:5->4->3->2->1->null

高階:

你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?

# definition for singly-linked list.

# class listnode(object):

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

(object):

defreverselist

(self, head)

:"""

:type head: listnode

:rtype: listnode

"""l1 = l2 =head

tmp =

while l1:

tmp.insert(

0, l1.val)

l1 = l1.

next

l1 = head

for _ in tmp:

l1.val = _

l1 = l1.

next

return l2

執行用時 : 52 ms, 在reverse linked list的python提交中擊敗了14.81% 的使用者

記憶體消耗 : 13.5 mb, 在reverse linked list的python提交中擊敗了48.24% 的使用者

借用了額外空間完成了。

# definition for singly-linked list.

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

reverselist

(self, head)

:"""

:type head: listnode

:rtype: listnode

"""prev =

none

curr = head

while curr :

tmp = curr.

next

curr.

next

= prev

prev = curr

curr = tmp

return prev

執行用時 : 56 ms, 在reverse linked list的python提交中擊敗了10.06% 的使用者

記憶體消耗 : 13.4 mb, 在reverse linked list的python提交中擊敗了49.72% 的使用者

# definition for singly-linked list.

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

reverselist

(self, head)

:"""

:type head: listnode

:rtype: listnode

"""p, rev = head,

none

while p:

rev, rev.

next

, p = p, rev, p.

next

return rev

執行用時 : 52 ms, 在reverse linked list的python提交中擊敗了14.81% 的使用者

記憶體消耗 : 13.5 mb, 在reverse linked list的python提交中擊敗了45.99% 的使用者

LeetCode 反轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null高階 你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?思路 雙指標,先用乙個指標算出鍊錶結點個數n,每次快指標從頭往先前移動n 步,慢指標往前移動1步進行交換即可。definition for sin...

LeetCode 反轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 思路分析 直接一趟掃瞄即可。方法二 遞迴 definition for singly linked list.struct listnode class solution listnode reversea...

反轉鍊錶 LeetCode

遞迴版本稍微複雜一些,其關鍵在於反向工作。假設列表的其餘部分已經被反轉,現在我該如何反轉它前面的部分?假設列表為 n1 nk 1 nk nk 1 nm 若從節點 nk 1 到 nm 已經被反轉,而我們正處於 nk n1 nk 1 nk nk 1 nm 我們希望 nk 1 的下乙個節點指向 nk 所以...