美文网首页Leetcode每日两题程序员
Leetcode 147. Insertion Sort Lis

Leetcode 147. Insertion Sort Lis

作者: ShutLove | 来源:发表于2017-10-27 14:56 被阅读5次

Sort a linked list using insertion sort.

题意:用插入排序的方法排序一个链表。

思路:

  1. 重启一个头结点指向新链表。

  2. 遍历待排序的链表,对每个带排序的节点a,在新链表中找第一个比a大的节点b。

  3. 将a插入到新链表,需要借助一个辅助指针pre。

     public ListNode insertionSortList(ListNode head) {
     if (head == null) {
         return null;
     }
    
     ListNode newHead = new ListNode(0);
     ListNode node = head;
     while (node != null) {
         ListNode newNode = new ListNode(node.val);
         if (newHead.next == null) {
             newHead.next = newNode;
         } else {
             //find first bigger
             ListNode pre = newHead;
             ListNode dummy = newHead.next;
             while (dummy != null && dummy.val < node.val) {
                 pre = pre.next;
                 dummy = dummy.next;
             }
             //insert
             pre.next = newNode;
             newNode.next = dummy;
         }
         node = node.next;
     }
    
     return newHead.next;
     }

相关文章

网友评论

    本文标题:Leetcode 147. Insertion Sort Lis

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