描述
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你应当 保留 两个分区中每个节点的初始相对位置。
分析
创建两个新的头结点,把大于等于x的结点跟在一个节点后面,剩下的结点跟在另一个结点后面。
class Solution {
public ListNode partition(ListNode head, int x) {
ListNode big = new ListNode(1);
ListNode little = new ListNode(1);
ListNode tmp = big;
ListNode dummy = little;
while(head != null){
if(head.val >= x){
big.next = head;
big = big.next;
}else{
little.next = head;
little = little.next;
}
head = head.next;
}
big.next = null;
little.next = tmp.next;
return dummy.next;
}
}