86. Partition List

来源:互联网 发布:wifi网络共享怎么设置 编辑:程序博客网 时间:2024/06/06 05:04

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.

把原来的list以x为bar分成两个list,最后再merge成一个。代码如下:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode partition(ListNode head, int x) {        ListNode l1 = new ListNode(0);        ListNode l2 = new ListNode(0);        ListNode curr = head, less = l1, great = l2;        while (curr != null) {            if (curr.val < x) {                less.next = curr;                less = less.next;            } else {                great.next = curr;                great = great.next;            }            curr = curr.next;        }        great.next = null;        less.next = l2.next;        return l1.next;    }}

0 0
原创粉丝点击