LeetCode 86. Partition List

来源:互联网 发布:如何选购家具 知乎 编辑:程序博客网 时间:2024/06/06 09:48

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小的放在前面,其余的放在后面,并不改变其相对位置。

思路是建立两个链表分别存放大数和小数,再把两个链表合在一起

/** * 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) {        if(head==null||head.next==null)return head;        ListNode shead = new ListNode(0);        ListNode lhead = new ListNode(0);        ListNode s = shead;        ListNode l = lhead;        while(head!=null){            if(head.val>=x){                l.next = head;                l = l.next;            }            else{                s.next = head;                s = s.next;            }            head = head.next;        }        s.next = lhead.next;        l.next = null;        return shead.next;    }}



原创粉丝点击