給定一個鏈表和一個特定值 x,對鏈表進行分隔,使得全部小於 x 的節點都在大於或等於 x 的節點以前。code
你應當保留兩個分區中每一個節點的初始相對位置。it
示例:io
輸入: head = 1->4->3->2->5->2, x = 3 輸出: 1->2->2->4->3->5
思路:小於的用一個頭結點,大於等於的用一個頭結點,而後將兩者相連。O(n),O(1)class
# 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 head p = ListNode(-100) q = ListNode(-100) tp, tq = p, q while head: if head.val < x: p.next = head p = head else: q.next = head q = head head = head.next p.next = q.next = None # 兩條鏈表收尾 p.next = tq.next return tp.next