題目連接ide
題目大意:對鏈表進行插入排序。post
解法:直接插入排序。代碼以下(耗時40ms):spa
1 public ListNode insertionSortList(ListNode head) { 2 ListNode first = new ListNode(0); 3 ListNode pre = first, cur = head, post = null; 4 while(cur != null) { 5 //保存cur.next,由於要遍歷當前結點,下一次就要遍歷當前結點的下一個結點,因此在此次遍歷完以後須要從新賦值cur=post 6 post = cur.next; 7 //尋找能夠插入的結點位置 8 while(pre.next != null && pre.next.val < cur.val) { 9 pre = pre.next; 10 } 11 //找到以後,將cur結點插入在pre和pre.next之間 12 cur.next = pre.next; 13 pre.next = cur; 14 //下一次pre再從頭開始找可插入的結點位置,因此要置爲開始頭節點 15 pre = first; 16 //下一次對cur.next結點進行排序,因此要將cur置回 17 cur = post; 18 } 19 return first.next; 20 }