美文网首页LeetCode刷题笔记JAVA语言
147. Insertion Sort List(JAVA链表的

147. Insertion Sort List(JAVA链表的

作者: cixing | 来源:发表于2018-04-22 14:41 被阅读0次

    思路

    1. 先判断边界输入。
    2. 拆出一个链表元素,head指针移动,直到head为空。
    3. 拿拆出的元素与新建的排好序的链表比较,看插在哪里。有三种方式,插在开头,插在中间,插在末尾。插入后把指针指到此链表开头,跳出循环。
    class Solution {
        public ListNode insertionSortList(ListNode head) {
            if(head==null||head.next==null)
                return head;
            ListNode p1 = new ListNode(-999);
            ListNode p2 = p1;
            ListNode p3 = p1;
            while(head!=null){
                ListNode tmp = new ListNode(head.val);
                head = head.next;
                if(p1.next==null){
                    p1.next = tmp;
                    continue;
               } 
                while(p1.next!=null){
                    if(tmp.val<p1.next.val){
                        ListNode tmp1 = p1.next;
                        p1.next = tmp;
                        tmp.next = tmp1;
                        p1 = p2;
                        break;
                    }
                    else
                        p1 = p1.next;
                }
                if(p1.next==null){
                p1.next = tmp;
                p1 = p2;
                }
            }
            return p3.next;     
    }
    }
    

    相关文章

      网友评论

        本文标题:147. Insertion Sort List(JAVA链表的

        本文链接:https://www.haomeiwen.com/subject/daqclftx.html