給定乙個鍊錶和乙個特定值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個部分應該按照在鍊錶 現的順序進行輸出,並且排在前面的部分的長度應該大於或等於後面的長度。返回乙個符合上述規則...