反轉乙個單鏈表。
示例:輸入: 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...