zoukankan      html  css  js  c++  java
  • 【LeetCode】Insertion Sort List

    Sort a linked list using insertion sort.

    //用到O(N)的额外空间
    public class Solution {
        public ListNode insertionSortList(ListNode head) {
            if(head==null||head.next==null)
                return head;
            ListNode root = new ListNode(head.val);
            ListNode cur = head.next;
            while(cur!=null){
                ListNode tempNode = root;
                ListNode pre = root;
                while(tempNode!=null){
                    if(cur.val>tempNode.val){
                        pre=tempNode;
                        tempNode=tempNode.next;
                    }else{
                        break;
                    }
                }           
                if(tempNode==root){
                    ListNode newNode = new ListNode(cur.val);
                    newNode.next=root;
                    root=newNode;
                    cur=cur.next;
                }else if(tempNode==null){
                    ListNode newNode = new ListNode(cur.val);
                    pre.next=newNode;
                    cur=cur.next;
                }else{
                    ListNode newNode = new ListNode(cur.val);
                    pre.next=newNode;
                    newNode.next=tempNode;
                    cur=cur.next;
                }
                
                
            }
            
            return root;
            
        }
    }
    public class NSolution {
        public ListNode insertionSortList(ListNode head) {
            if(head==null||head.next==null)
                return head;
            
            ListNode cur = head.next;
            head.next=null;
            while(cur!=null){
                ListNode tempNode = head;
                ListNode pre = head;
                while(tempNode!=null){
                    if(cur.val>tempNode.val){
                        pre=tempNode;
                        tempNode=tempNode.next;
                    }else{
                        break;
                    }
                }           
                if(tempNode==head){
                    ListNode newNode = new ListNode(cur.val);
                    newNode.next=head;
                    head=newNode;
                    cur=cur.next;
                    
                    
                    
                }else if(tempNode==null){
                    ListNode newNode = new ListNode(cur.val);
                    pre.next=newNode;
                    cur=cur.next;
                }else{
                    ListNode newNode = new ListNode(cur.val);
                    pre.next=newNode;
                    newNode.next=tempNode;
                    cur=cur.next;
                }
                
                
            }
            
            return head;
            
        }
    }
  • 相关阅读:
    字典的增删改查
    基础数据类型
    Linux程序优化实践
    Linuxt性能调优指南
    【MySQL】Percona Toolkits工具介绍及使用
    【MySQL】如何构建高性能MySQL系统?
    【MySQL】Event使用案例
    【MySQL】事件调度器 (Event Scheduler)
    【MySQL】mydumper工具介绍
    spu与sku的含义
  • 原文地址:https://www.cnblogs.com/yixianyixian/p/3721685.html
Copyright © 2011-2022 走看看