美文网首页
LeetCode147 Insertion Sort List

LeetCode147 Insertion Sort List

作者: ShuiLocked | 来源:发表于2016-08-28 13:05 被阅读13次

LeetCode 147 Insertion Sort List

遇到操作linked list的题目,先判断head或者head.next是否为空。
之后再对node数>=2的情况进行讨论。

首先回忆一下insertion sort!!!
搜索数组,如果当前的数curr小于前一个数prev,则将该数curr插入到head到prev之间的位置。

代码:

public class Solution {
    public ListNode insertionSortList(ListNode head) {
        if (head == null || head.next == null) return head;
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode prev = head, curr = head.next;
        
        while (curr != null) {
            if (curr.val >= prev.val) {
                prev = curr;
                curr = curr.next;
            } else {
                // Start from dummy and head, to find where to insert the curr node
                // Find the first node c whose val is >= curr, insert curr node before node c
                ListNode next = curr.next, p = dummy, c = dummy.next;
                while (c.val < curr.val) {
                    p = p.next;
                    c = c.next;
                }
                p.next = curr;
                curr.next = c;
                curr = next;
                prev.next = curr;
            }
        }
        
        return dummy.next;
    }
}

相关文章

网友评论

      本文标题:LeetCode147 Insertion Sort List

      本文链接:https://www.haomeiwen.com/subject/uwwtettx.html