Leetcode Insertion Sort List 解题报告

来源:互联网 发布:女生发型 知乎 编辑:程序博客网 时间:2024/05/02 00:10
http://oj.leetcode.com/problems/insertion-sort-list/
Sort a linked list using insertion sort.

基本分析:用插入排序对一个链表进行排序。
一开始写的时候想套用数组的插入排序,结果发现无法对末节点加上NULL。
对链表进行插入排序的正确方法是:新建一个头节点,遍历原来的链表,对原链表的每个节点找到新链表中适合插入位置的前指针,然后执行插入操作。
这种操作链表的题有一个技巧就是新建一个dummy作为head,然后把数据插入到dummy的链表中,最后返回dummy.next。
重写了一遍,bug free,一次AC了:)
public class Solution {    ListNode searchForInsertPos(ListNode head, int val) {    ListNode pre  = head;    ListNode next = head.next;    while(next!=null&&next.val<=val) {    pre  = next;    next = next.next;    }    return pre;    }    public ListNode insertionSortList(ListNode head) {     if(head==null||head.next==null) {     return head;     }      ListNode dummy = new ListNode(-1);     dummy.next = null;     ListNode new_next;     ListNode pre,next;     //ListNode iter = head;     while(head!=null) {     next = head.next;     pre  = searchForInsertPos(dummy,head.val);     new_next = pre.next;     head.next = new_next;     pre.next  = head;     head = next;     }     return dummy.next;    }}






0 0
原创粉丝点击