给定一个链表和一个特定值 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