给你一个链表的头节点 head 和一个特定值 **x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你不需要 保留 每个分区中各节点的初始相对位置。力扣原文
示例 1:
输入: head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]
示例 2:
输入: head = [2,1], x = 2
输出:[1,2]
//题目理解将大于等于k的几点方到后边,且顺序不变
解题思路,将大于等于的放到一个新节点,然后将旧节点的的末端节点指向新节点
function ListNode(val,next) {
this.val = val;
this.next = next||null;
}
var partition = function(head, x) {
let big=new ListNode(-1),bigCur=big;
empty=new ListNode(-1,head);pre=empty,cur=pre.next;
while(cur){
if(cur.val>=x){
bigCur.next=cur;
pre.next =cur.next
cur.next=null
cur= pre.next
bigCur=bigCur.next
}else{
pre=cur
cur=pre.next
}
}
pre.next=big.next
return empty.next
};