leetcode 86 分隔鍊錶

2021-10-13 21:04:24 字數 1488 閱讀 4495

目錄

一、題目內容

二、解題思路

三、**

給你乙個鍊錶和乙個特定值 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:

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 新建兩個鍊錶,給定的特定值。對鍊錶分隔,將小於特定值的節點放在乙個鍊...