450 K組翻轉鍊錶

2022-02-14 20:37:14 字數 1493 閱讀 8554

中文english

給你乙個鍊錶以及乙個k,將這個鍊錶從頭指標開始每k個翻轉一下。

鍊錶元素個數不是k的倍數,最後剩餘的不用翻轉。

example 1

input:

list = 1->2->3->4->5->null

k = 2

output:

2->1->4->3->5

example 2

input:

list = 1->2->3->4->5->null

k = 3

output:

3->2->1->4->5

列表翻轉 + 生成鍊錶

"""

definition of listnode

class listnode(object

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

self.val =val

self.next =next

"""class

solution:

"""@param head: a listnode

@param k: an integer

@return: a listnode

"""def reversekgroup(self, head, k):

# write your code here

#大致思路:寫乙個子函式,生成鍊錶

#另乙個寫法,全部丟進佇列裡面,然後翻轉,重構

queue =

dummay = listnode(0

) tail =dummay

while

head:

head =head.next

count = len(queue)//

k last = len(queue)%k

array =

for i in

range(count):

array.extend(queue[i*k: (i + 1)*k][:: -1

])

if (last != 0

): array.extend(queue[count*k: ])

tail.next =self.getlink(array)

return

dummay.next

def getlink(self, array):

new_dummay = listnode(0

) tail =new_dummay

for val in

array:

tail.next =listnode(val)

tail =tail.next

return new_dummay.next

鍊錶的K組翻轉問題

在這兩天的刷題中,遇到乙個求鍊錶的翻轉問題,坦白講,這個問題我想得思路有很多種,但在這麼多種的思路中,沒有乙個是能夠輕易實現的。題目如下。鍊錶翻轉。給出乙個鍊錶和乙個數k,比如鍊錶1 2 3 4 5 6,k 2,翻轉後2 1 4 3 6 5,若k 3,翻轉後3 2 1 6 5 4,若k 4,翻轉後4...

k個一組翻轉鍊錶

題目描述 給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5當 k 2 時,應當返回 2 1 4 3 5當 k 3 時,應當返回 3 2 1...

leetcode25 k組翻轉鍊錶

這題可以參考206的答案,事實上,我直接把翻轉部分的 用了leetcode206官方題解上面的,只是做了一點小修改,以保證是前k個反轉 我們具體分析核心函式 reversekgroup 乙個關鍵是怎麼把這個問題分解成好幾個單獨的翻轉問題,我這裡的reverselist函式做了改動,只反轉前面k個節點...