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

【LeetCode】Partition List

时间:2014-05-24 04:59:06      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   c   code   

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.

O(1) 的空间 O(n)的时间复杂度

bubuko.com,布布扣
public class Solution {
    public ListNode partition(ListNode head, int x) {
        if(head==null||head.next==null)
            return head;
        ListNode root = head;
        ListNode less = head;
        ListNode re = head;
        
        if(head.val>=x){
            ListNode tt = new ListNode(0);
            root = tt;
            ListNode pre = root;
            root.next=head;
            
            while(less!=null){
                if(less.val>=x){
                    pre=pre.next;
                    less=less.next;
                    continue;
                }
                ListNode temp = new ListNode(less.val);
                temp.next=root.next;
                root.next=temp;
                root=temp;
                
                pre.next=less.next;                
                less=pre.next;        
            }
            re=tt.next;
        }else{
            root=head;
            ListNode pre=head;
            less=head.next;
            while(less!=null){
                if(less.val>=x){
                    pre=pre.next;
                    less=less.next;
                    continue;
                }
                ListNode temp = new ListNode(less.val);
                //需要特殊注意的地方 特殊case [1,1] 2
                if(root==pre){
                    root=root.next;
                    pre=pre.next;
                    less=less.next;
                }else{
                    temp.next=root.next;
                    root.next=temp;
                    root=temp;
                    
                    pre.next=less.next;                
                    less=pre.next;
                }
                        
            }
        }
                
            
        
        return re;
        
    }
}
bubuko.com,布布扣

 

【LeetCode】Partition List,布布扣,bubuko.com

【LeetCode】Partition List

标签:des   style   class   blog   c   code   

原文地址:http://www.cnblogs.com/yixianyixian/p/3736525.html

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