https://leetcode-cn.com/problems/partition-list-lcci/
难度中等24
编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。
示例:
输入: head = 3->5->8->5->10->2->1, x = 5
输出: 3->1->2->10->5->5->8
/**
* 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==null || head!=null && head.next ==null) return head;
var pre = head; //记录前一个节点
var temp = head.next; //记录当前节点
var node = null;
while (temp) {
if (temp.val < x) {
pre.next = pre.next.next;
temp.next = head;
head = temp;
temp = pre.next;
}
else {
pre = temp;
temp = temp.next;
}
}
return head;
};
执行用时:84 ms, 在所有 JavaScript 提交中击败了48.35%的用户
内存消耗:39.2 MB, 在所有 JavaScript 提交中击败了37.50%的用户