206 反轉鍊錶

2021-10-02 12:23:53 字數 1584 閱讀 8202

反轉乙個單鏈表。

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

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

用乙個變數來儲存當前節點的next指標,next_node

用乙個變數來儲存前乙個節點, prev

# 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:

cur, prev = head,

none

next_node =

none

while cur:

next_node = cur.

next

cur.

next

= prev

prev = cur

cur = next_node

return prev

這個**可以使用python獨有的多變數賦值進行化簡

# 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:

cur, prev = head,

none

while cur:

cur.

next

, prev, cur = prev, cur, cur.

next

return prev

這裡注意別踩坑,a, b, c = 1, 2, 3,其執行順序:

先執行等號右邊的表示式,再依次將值賦給左邊,python直譯器會將其組成為乙個tuple,賦值的時候再unpack。

>>> a, b = 2, 0

>>> a, b, a = 1, a, 4

>>> a, b

(4, 2)

cur.

next

, prev, cur = prev, cur, cur.

next

不能與下面這段**等價,因為它會丟失cur.

next的節點

cur.

next

= prev

prev = cur

cur = cur.

next

206 反轉鍊錶

任務描述 思路 遇到問題 修改 迴圈前判斷傳入引數是否為空 迭代時沒有考慮l3.next none的情況 實現 definition for singly linked list.class listnode def init self,x self.val x self.next none cla...

206 反轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 迭代就不說了,儲存當前節點的前繼節點迴圈改變指標指向就行。我自己先寫了個遞迴的,但看了題解的遞迴,一比就比下去了。class solution def reverselist self,head listn...

206 反轉鍊錶

題目 反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 思路 首先,我們建立兩個新的空節點 prev 和 newhead 我們原來的第乙個節點的下乙個節點指向prev,然後再讓prev 指向第乙個節點,這樣就完成了第乙個節點的逆置,以此類推就可以翻轉這個鍊...