题目介绍
给你一个链表的头节点 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]
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/pa… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
把链表拆分成左右两个链表,遍历链表,如果链表的值比x小统一放到左边,否则就放在右边。最后把左右两边的链表链接即可
代码
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @param {number} x
* @return {ListNode}
*/
var partition = function(head, x) {
if (!head) return null
let leftHead = new ListNode(0)
let rightHead = new ListNode(0)
let left = leftHead
let right = rightHead
let cur = head
while(cur) {
if (cur.val < x) {
left = left.next = cur
} else {
right = right.next = cur
}
cur = cur.next
}
left.next = rightHead.next
right.next = null
return leftHead.next
};