中文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個節點...