206 反轉鍊錶

2021-09-22 18:07:50 字數 1505 閱讀 1395

任務描述

思路

遇到問題

修改:迴圈前判斷傳入引數是否為空

迭代時沒有考慮l3.next = none的情況

**實現

# 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 not head or head.next == none:

return head

res = self.reverselist(head.next) # res指向反轉後鍊錶的頭部

head.next.next = head

head.next = none

return res

# 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 not head or head.next == none:

return head

l1 = head

l2 = head.next

l3 = l2

l1.next = none

while l2:

l3 = l2.next

l2.next = l1

l1 = l2

l2 = l3

return l1

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 指向第乙個節點,這樣就完成了第乙個節點的逆置,以此類推就可以翻轉這個鍊...

206 反轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 我的解法 使用二分法遞迴 設定快慢指標找到中點 分別反轉再連線 class solution public listnode reverselist listnode head else listnode ...