题目
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你应当 保留 两个分区中每个节点的初始相对位置。
示例 1:
输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]
解
class Solution {public ListNode partition(ListNode head, int x) {ListNode dummy = new ListNode(0);dummy.next = head;ListNode p1 = dummy;ListNode p2 = dummy;ListNode p3 = null;while (p2 != null) {p3 = p2.next;if (p3 != null && p3.val < x) {if(p1.next == p3){p2 = p3;p1 = p2; }else{p2.next = p3.next;ListNode temp = p1.next;p1.next = p3;p3.next = temp;p1 = p1.next;}}else{p2 = p3;}}return dummy.next;}
}