zoukankan      html  css  js  c++  java
  • 【LeetCode】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.

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

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

    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;
            
        }
    }
  • 相关阅读:
    Jenkins常见的构建触发器
    NTP服务器搭建
    Jenkins钉钉通知
    Jenkins邮件通知
    升级到k8s的17.0出现问题
    推荐K8s的一键安装和一键升级
    Pipeline流水线项目构建
    Jenkins构建Maven项目
    Jenkins构建自由风格的项目
    Codeforces Round #570 (Div. 3 )A
  • 原文地址:https://www.cnblogs.com/yixianyixian/p/3740615.html
Copyright © 2011-2022 走看看