目錄
一、題目內容
二、解題思路
三、**
給你乙個鍊錶和乙個特定值 x ,請你對鍊錶進行分隔,使得所有小於 x 的節點都出現在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。
示例:建立兩個鍊錶,乙個存放小於x的,乙個存放大於x的,順序不動,最後將兩個鍊錶進行拼接即可。輸入:head = 1->4->3->2->5->2, x = 3
輸出:1->2->2->4->3->5
# definition for singly-linked list.
class listnode:
def __init__(self, x):
self.val = x
self.next = none
def __repr__(self):
return str(self.val)
class solution:
def partition(self, head: listnode, x: int) -> listnode:
if not head:
return head
head1 = listnode(0)
head2 = listnode(0)
cur1 = head1
cur2 = head2
while head:
if head.val < x:
cur1.next = head
head = head.next
cur1 = cur1.next
cur1.next = none
else:
cur2.next = head
head = head.next
cur2 = cur2.next
cur2.next = none
cur1.next = head2.next
return head1.next
if __name__ == '__main__':
s = solution()
head_list = [1, 4, 3, 2, 5, 2]
head = listnode(head_list[0])
cur = head
for i in range(1, len(head_list)):
cur.next = listnode(head_list[i])
cur = cur.next
x = 3
ans = s.partition(head, x)
print(ans)
Leetcode86 分隔鍊錶
題目描述 給定乙個鍊錶和乙個特定值x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5演算法描述 此題有兩種解法,第一種就是將所有小於給定值的節點取...
leetcode86 分隔鍊錶
給定乙個鍊錶和乙個特定值x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5 把所有小於給定值的節點都移到前面,大於該值的節點順序不變。將所有小於給...
leetcode86分隔鍊錶
給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5 新建兩個鍊錶,給定的特定值。對鍊錶分隔,將小於特定值的節點放在乙個鍊...