1. 程式人生 > >173. Insertion Sort List【LintCode by java】

173. Insertion Sort List【LintCode by java】

div 通過 amp next 方便 title 簡單 重要 font

Description

Sort a linked list using insertion sort.

Example

Given 1->3->2->0->null, return 0->1->2->3->null.

解題:用插入法排序鏈表。很簡單的一道題目,但還是出現了很多問題。

總結一下遇到的問題:

(1)沒有頭結點的情況下,為了方便可以構造一個,返回頭結點的next就行了。

(2)沒有必要一直在原來的鏈表上糾結,完全可以申請一個頭結點,將原鏈表結點一個個插進去。

(3)沒有必要一上來就考慮怎樣寫更簡單,能做出來才是最重要的,寫好了一種方法後可以再優化。

(4)多組測試數據沒通過後,要考慮一下算法的可行性,別在一個坑裏爬不出來。

代碼如下:

 1 /**
 2  * Definition for ListNode
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int x) {
 7  *         val = x;
 8  *         next = null;
 9  *     }
10  * }
11  */
12 
13 public class Solution {
14     /**
15
* @param head: The first node of linked list. 16 * @return: The head of linked list. 17 */ 18 public ListNode insertionSortList(ListNode head) { 19 // write your code here 20 //新鏈表的頭結點 21 ListNode dummy = new ListNode(0); 22 while(head != null){ 23 ListNode node = dummy;
24 while(node.next != null && node.next.val < head.val){ 25 node = node.next; 26 } 27 ListNode temp = head.next; 28 head.next = node.next; 29 node.next = head; 30 head = temp; 31 } 32 return dummy.next; 33 } 34 }

173. Insertion Sort List【LintCode by java】