Leetcode鍊錶刷題之 206 反轉鍊錶

2021-10-21 04:29:44 字數 1359 閱讀 4974

反轉乙個單鏈表。

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

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

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

### 解題思路

原地旋轉鍊錶,可以構建兩個指標,乙個指向當前結點的前乙個,乙個指向當前的結點,每次迴圈的時候,找到當前鍊錶的下乙個,在翻轉的過程中,將當前結點指向前向結點,完成部分翻轉,然後向後移動,更新當前結點,前向結點,直到反轉完成。

### **

```python

# definition for singly-linked list.

# class listnode(object):

# def __init__(self, val=0, next=none):

# self.val = val

# self.next = next

class solution(object):

def reverselist(self, head):

""":type head: listnode

:rtype: listnode

"""if not head:

return none

pre = none

cur = head

while cur:

nex = cur.next

cur.next = pre

pre = cur

cur = nex

return pre

```

# definition for singly-linked list.

# class listnode(object):

# def __init__(self, val=0, next=none):

# self.val = val

# self.next = next

class solution(object):

def reverselist(self, head):

""":type head: listnode

:rtype: listnode

"""if head == none or head.next == none:

return head

tail = head.next

p = self.reverselist(head.next)

head.next = tail.next

tail.next = head

return p

Leetcode刷題鍊錶之環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。定義兩個指標,從頭節點開始,兩個指標都向右移動,但是設定他們的移動速度不一樣,如果為環形鍊錶,則指標肯定會相遇。若為直鏈表,兩個指標至少有乙個為空。definition for singly linked list.class listnode public cla...

Leetcode刷題日記之回文鍊錶

回文鍊錶 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false示例 2 輸入 1 2 2 1輸出 true高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?首先解決這個問題的第一步,一定需要使用到快慢指標fast和slow,找到鍊錶中點,並在前進過程中將鍊錶的一半進行...

Leetcode刷題筆記之 鍊錶 總結

21.合併兩個有序鍊錶 2.兩數相加 61.旋轉鍊錶 可見,如果經常需要新增或刪除結點,鍊錶更好,經常按索引訪問元素,陣列更好 class solution def mergetwolists self,l1 listnode,l2 listnode listnode 設定合併後的表頭 new he...