【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 }

 

你可能感兴趣的:(LeetCode)