• 【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;
            
        }
    }
  • 相关阅读:
    day10 测试2
    算法题
    day10 自动化测试
    day09 测试
    进行试验,对比
    多层网络的SIR实现
    day08 商城项目
    day07 cookie session 模板
    day06 模型类
    纸上谈兵:图(graph)
  • 原文地址:https://www.cnblogs.com/yixianyixian/p/3721685.html
Copyright © 2020-2023  润新知