Leetcode 25 K個一組反轉鍊錶

2022-10-08 17:03:25 字數 1291 閱讀 5508

要點:

# definition for singly-linked list.

# class listnode(object):

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

# self.val = val

# self.next = next

class solution(object):

def reverse(self,head,tail): #反轉鍊錶

cur=head

prev=tail.next

while prev!=tail:

nex=cur.next

cur.next=prev

prev=cur

cur=nex

return tail,head

def reversekgroup(self, head, k):

""":type head: listnode

:type k: int

:rtype: listnode

"""hair=listnode(0) #用於最後返回頭結點

hair.next=head

pre=hair #記錄需反轉子鍊錶的前乙個結點,方便後續連線

tail=pre

while head:

tail=pre

for i in range(k): #查詢是否有k個結點

tail=tail.next

if not tail:

return hair.next

nex=tail.next #記錄需反轉子鍊錶的後乙個結點(似乎可以不設定)

head,tail=self.reverse(head,tail)

pre.next=head

#tail.next=nex #在反轉鍊錶操作中已將原頭結點與nex相連

pre=tail

head=tail.next

return hair.next

LeetCode 25 k個一組翻轉鍊錶

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

LeetCode 25 K個一組翻轉鍊錶

按照每k個為一組,記錄這組內的頭和尾,第一組只需記錄翻轉後的尾即tail 接下來的每一組記錄翻轉後頭 nhead 和尾 ntail.注意更新的順序 class solution length k if length 0 return head p head listnode otail head l...

leetcode 25 k個一組翻轉鍊錶

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