173. Insertion Sort List【LintCode by java】
阿新 • • 發佈:2018-06-16
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】