反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。
說明: 1 ≤ m ≤ n ≤ 鍊錶長度。
輸入: 1->2->3->4->5->null, m = 2, n = 4
輸出: 1->4->3->2->5->null
# definition for singly-linked list.
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class
solution
:def
reversebetween
(self, head: listnode, m:
int, n:
int)
-> listnode:
ifnot head:
return
none
# cur 指向第乙個要轉的位置,pre指向cur之前
cur, prev = head,
none
while m >1:
prev = cur
cur = cur.
next
m, n = m -
1, n -
1'''
tail 一直指向3,因為3就是最後乙個
prev 一直指向
1->2—>->6->7 ==> 1->2—>->6->7
| | | | | | |
con cur third con pre tail cur
pre
'''tail, con = cur, prev
while n:
third = cur.
next
cur.
next
= prev
prev = cur
cur = third
n -=
1# con == none 即prev == none,即從第1個開始置換,那麼head = prev
if con:
con.
next
= prev
else
: head = prev
tail.
next
= cur
return head
leetcode 92反轉鍊錶
反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4 輸出 1 4 3 2 5 null definition for singly linked list.public class listnode class...
LeetCode 92 反轉鍊錶 II
反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4 輸出 1 4 3 2 5 null 5ms definition for singly linked list.public class listnode c...
leetcode92 反轉鍊錶 II
反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4輸出 1 4 3 2 5 null思路 先往後遍歷找到需要反轉的節點作為起點 count m 然後按照劍指offer 反轉鍊錶 的思路,設定curr,pre,p...