【Leetcode】147. Insertion Sort List

於淼發表於2018-02-27

Question:

Sort a linked list using insertion sort.

Tips:

使用插入排序,對一個連結串列進行排序。

思路:

新建一個頭結點newHead,設定一個pre指標,指向newHead。

cur指標,指向原來的頭結點head。

當pre.next的值大於cur的值,就將cur插入到pre之後,否則pre指標後移。

插入一個值之後再將pre指向newHead。

程式碼:

public ListNode insertionSortList(ListNode head) {
         if(head==null ||head.next==null) return head;
         //新的頭結點
            ListNode newHead= new ListNode(-1);
            ListNode pre=newHead;
            ListNode cur=head;
            ListNode next=null;
            while(cur!=null){
                next=cur.next;
                //pre的next值小於cur的值,pre指標後移。即找到cur應該插入的位置。
                while(pre.next!=null && pre.next.val<cur.val){
                    pre=pre.next;
                }
          //將cur插到pre與pre.next之間 cur.next
=pre.next; pre.next=cur; cur=next; pre=newHead; } return newHead.next; }

 

相關文章