LeetCode 86. 分隔連結串列
阿新 • • 發佈:2020-12-20
86. 分隔連結串列
Difficulty: 中等
給定一個連結串列和一個特定值 x,對連結串列進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。
你應當保留兩個分割槽中每個節點的初始相對位置。
示例:
輸入: head = 1->4->3->2->5->2, x = 3
輸出: 1->2->2->4->3->5
Solution
如果沒有second.next = None
這一行程式碼,新得出的連結串列中將會有一個環,比如根據下面給出的解法,first
是1->2->2,second
是4->3->5,此時second中的5節點仍然還是指向2(也就是first中的最後一個節點),然後first.next = high.next
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def partition(self, head: ListNode, x: int) -> ListNode: if not head: return None low, high = ListNode(-1), ListNode(-1) first, second = low, high while head: if head.val < x: first.next = head first = first.next else: second.next = head second = second.next head = head.next second.next = None first.next = high.next return low.next