首页 > 代码库 > 【leetcode刷题笔记】Insertion Sort List

【leetcode刷题笔记】Insertion Sort List

Sort a linked list using insertion sort.


 

题解:实现链表的插入排序。

要注意的地方就是,处理链表插入的时候尽量往当前游标的后面插入,而不要往前面插入,后者非常麻烦。所以每次利用kepeler.next.val和head.val比较大小,而不是kepeler.val和head.val比较大小,因为如果用后者,要把head指向的节点插入到kepeler指向的节点的前面,如果kepeler指向的节点是头结点,就更麻烦了。

代码如下:

 1 /** 2  * Definition for singly-linked list. 3  * public class ListNode { 4  *     int val; 5  *     ListNode next; 6  *     ListNode(int x) { 7  *         val = x; 8  *         next = null; 9  *     }10  * }11  */12 public class Solution {13     public ListNode insertionSortList(ListNode head) {14         ListNode newHead = new ListNode(0);15           16           while(head != null){17               ListNode kepeler = newHead;18               while(kepeler.next != null && kepeler.next.val < head.val){19                   kepeler = kepeler.next;20               }21               22               ListNode temp = head.next;23               head.next = kepeler.next;24               kepeler.next = head;25               head = temp;26           }27           28           return newHead.next;29     }30 }