25 K 個一組翻轉鍊錶

2021-10-06 04:59:59 字數 1106 閱讀 9501

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