码迷,mamicode.com
首页 > 其他好文 > 详细

【链表】Partition List

时间:2016-01-20 11:17:25      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

题目:

Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.

You should preserve the original relative order of the nodes in each of the two partitions.

For example,
Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.

思路:

只要把比x小的节点按顺序连成一条链,比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==null||head.next==null){
        return head;
    }
    var lHead=null;
    var gHead=null;
    
    var p=head,pl=null,pg=null,temp=null;
    
    while(p){
        if(p.val<x){
            if(lHead==null){
                lHead=p;
                pl=p;
            }else{
                pl.next=p;
                pl=pl.next;
            }
        }else{
            if(gHead==null){
                gHead=p;
                pg=p;
            }else{
                pg.next=p;
                pg=pg.next;
            }
        }
        temp=p;
        p=p.next;
        temp.next=null;
    }
    
    if(pg!=null){
        pg.next=null;
    }
    if(lHead!=null){
        pl.next=gHead;
        return lHead;
    }else{
        return gHead;
    }
};

 

【链表】Partition List

标签:

原文地址:http://www.cnblogs.com/shytong/p/5144350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!