Leetcode 147. Insertion Sort List

Sort a linked list using insertion sort.

題意:用插入排序的方法排序一個鏈表。

思路:

  1. 重啟一個頭結點指向新鏈表。

  2. 遍歷待排序的鏈表,對每個帶排序的節點a,在新鏈表中找第一個比a大的節點b。

  3. 將a插入到新鏈表,需要借助一個輔助指針pre。

     public ListNode insertionSortList(ListNode head) {
     if (head == null) {
         return null;
     }
    
     ListNode newHead = new ListNode(0);
     ListNode node = head;
     while (node != null) {
         ListNode newNode = new ListNode(node.val);
         if (newHead.next == null) {
             newHead.next = newNode;
         } else {
             //find first bigger
             ListNode pre = newHead;
             ListNode dummy = newHead.next;
             while (dummy != null && dummy.val < node.val) {
                 pre = pre.next;
                 dummy = dummy.next;
             }
             //insert
             pre.next = newNode;
             newNode.next = dummy;
         }
         node = node.next;
     }
    
     return newHead.next;
     }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容