86 分割鍊錶

2022-06-07 17:42:11 字數 1352 閱讀 2655

給定乙個鍊錶和乙個特定值x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。

你應當保留兩個分割槽中每個節點的初始相對位置。

示例:

輸入: head = 1->4->3->2->5->2, x = 3

輸出: 1->2->2->4->3->5

思路:用兩個鍊錶分別存小於x和大於等於x的元素,然後連線兩個鍊錶。

#

definition for singly-linked list.

#class listnode(object):

#def __init__(self, x):

#self.val = x

#self.next = none

class

solution(object):

defpartition(self, head, x):

f, b = listnode(-1), listnode(-1)

f1, b1 =f, b

while

head:

if head.val f1.next, head =head, head.next

f1 =f1.next

f1.next =none

else

: b1.next, head =head, head.next

b1 =b1.next

b1.next =none

f1.next =b.next

return f.next

#

自己寫的**如下:

class

solution(object):

defpartition(self, head, x):

dummynode =listnode(none)

dummynode.next =none

pre =dummynode

p =head

cur =p

while cur!=none:

if cur.valif p ==cur:

cur =cur.next

else

: p.next =cur

p =cur

cur =cur.next

else

: pre.next =cur

pre =cur

cur =cur.next

pre.next =none

if dummynode.next !=none:

p.next =dummynode.next

return head

LeetCode86 分割鍊錶 2018 11 8

題幹 給定乙個鍊錶和乙個特定值x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3輸出 1 2 2 4 3 5演算法思想 將小於x的元素單獨拿出來,最後分成兩個鍊錶,乙個全是小於...

2 4 分割鍊錶

template typename t singlylinkednode partition singlylinkednode head,t partition singlylinkednode newhead head singlylinkednode newtail head singlylin...

LeetCode725分割鍊錶

題目 給定乙個頭結點為 root 的鍊錶,編寫乙個函式以將鍊錶分隔為 k 個連續的部分。每部分的長度應該盡可能的相等 任意兩部分的長度差距不能超過 1,也就是說可能有些部分為 null。這k個部分應該按照在鍊錶 現的順序進行輸出,並且排在前面的部分的長度應該大於或等於後面的長度。返回乙個符合上述規則...