题目
给你一个链表的头节点 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;
}
}