給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。
如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。
示例:給你這個鍊錶:1->2->3->4->5
當 k = 2 時,應當返回: 2->1->4->3->5
當 k = 3 時,應當返回: 3->2->1->4->5
1.o(n)空間做法
2.輔助棧,o(k)空間
# definition for singly-linked list.
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class solution:
def reversekgroup(self, head: listnode, k: int) -> listnode:
if not head or k==0:return head
tmp=
while head:
head=head.next
index=0
res=
while index+k<=len(tmp):
res+=tmp[index:index+k][::-1]
index+=k
if indexlistnode:
p=newhead=listnode(-1)
while true:
count=k
stack=
tmp=head
while count and tmp:
tmp=tmp.next
count-=1
if count:
p.next=head
break
while stack:
p.next=stack.pop()
p=p.next
head=tmp
return newhead.next
25 k個一組翻轉鍊錶
給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2 1 4 ...
25 K 個一組翻轉鍊錶
題目.有意思可以拆解為3個子問題 另外變數和邏輯比較多容易搞混,最好多定義幾個臨時變數 package main import fmt type listnode struct func printlist root listnode fmt.println func reverse head li...
25 K 個一組翻轉鍊錶
給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。按部就班地模擬翻轉過程 definition for singly linked list.public class li...