K 個一組翻轉鍊錶

2021-10-06 05:18:50 字數 2201 閱讀 5127

給你乙個鍊錶,每 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...