LeetCode-86. Partition List

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.

Example:

Input: head = 1->4->3->2->5->2, x = 3
Output: 1->2->2->4->3->5
    public ListNode partition(ListNode head, int x) {
        ListNode smallerH = new ListNode(0);
        ListNode scur = smallerH;
        ListNode biggerH = new ListNode(0);
        ListNode bcur = biggerH;
        ListNode cur = head;
        while(cur!=null){
            if(cur.val <x){
                scur.next = cur;
                scur = scur.next;
            }
            else{
                bcur.next = cur;
                bcur = bcur.next;
            }
            cur = cur.next;
        }
        scur.next = biggerH.next;
        bcur.next = null;
        return smallerH.next;
    }

 

posted @ 2019-07-09 20:47  月半榨菜  阅读(61)  评论(0编辑  收藏  举报