給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。
k 是乙個正整數,它的值小於或等於鍊錶的長度。
如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。
給你這個鍊錶:1->2->3->4->5
當 k = 2 時,應當返回: 2->1->4->3->5
當 k = 3 時,應當返回: 3->2->1->4->5
把鍊錶分為k個一組,每組進行翻轉,不足k個時保持原順序
#
## [25] k 個一組翻轉鍊錶
## @lc code=start
# definition for singly-linked list.
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
# 給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。
# k 是乙個正整數,它的值小於或等於鍊錶的長度。
# 如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。
# 示例:
# 給你這個鍊錶:1->2->3->4->5
# 當 k = 2 時,應當返回: 2->1->4->3->5
# 當 k = 3 時,應當返回: 3->2->1->4->5
class solution:
def reversekgroup(self, head: listnode, k: int) -> listnode:
# k==1時就是head
if k != 1:
# 置乙個0節點
start = listnode(0)
# 結果鍊錶第乙個節點為0
res = start
# 遍歷的節點下標
endindex = 1
# 剩餘節點》=k為false
flag = false
while head:
# 每組的第乙個節點時
if endindex % k == 1:
# 儲存第乙個節點
pre = head
# 判斷剩餘節點個數與k的大小關係
tem1 = head
for i in range(k):
if not tem1:
# 不足k個節點時,前一組最後乙個節點接入本組第乙個節點
start.next = pre
# 標誌置為true
flag = true
# 退出迴圈
break
tem1 = tem1.next
if flag:
break
# 實現翻轉鍊錶
# 第一次迴圈時:
# 開始時 head --> 1->2->3->4
# start --> 0
# 結束時 head --> 2->3->4
# start --> 0->1
# 第二次迴圈時:
# 開始時 head --> 2->3->4
# start --> 0->1
# 結束時 head --> 3->4
# start --> 0->2->1
tem = head.next
head.next = start.next
start.next = head
head = tem
# 第k個節點時
if endindex % k == 0:
# 本組第乙個節點(翻轉之後是本組最後乙個節點)接入未翻轉的節點
pre.next = head
# 開始節點變為本組最後乙個節點
start = pre
# 開始節點後續清空
start.next = none
# 遍歷下標+1
endindex += 1
return res.next
else:
return head
# @lc code=end
k個一組翻轉鍊錶
題目描述 給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5當 k 2 時,應當返回 2 1 4 3 5當 k 3 時,應當返回 3 2 1...
K 個一組翻轉鍊錶
給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2 1...
K個一組翻轉鍊錶
難度困難416收藏分享切換為英文關注反饋 給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。示例 給你這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3...