zoukankan      html  css  js  c++  java
  • [LeetCode] Insertion Sort List

    Well, life gets difficult pretty soon whenever the same operation on array is transferred to linked list.

    First, a quick recap of insertion sort:

    Start from the second element (simply a[1] in array and the annoying head -> next -> val in linked list), each time when we see a node with val smaller than its previous node, we scan from the head and find the position that the current node should be inserted. Since a node may be inserted before head, we create a new_head that points to head. The insertion operation, however, is a little easier for linked list.

    Now comes the code:

     1 class Solution { 
     2 public:
     3     ListNode* insertionSortList(ListNode* head) {
     4         ListNode* new_head = new ListNode(0);
     5         new_head -> next = head;
     6         ListNode* pre = new_head;
     7         ListNode* cur = head;
     8         while (cur) {
     9             if (cur -> next && cur -> next -> val < cur -> val) {
    10                 while (pre -> next && pre -> next -> val < cur -> next -> val)
    11                     pre = pre -> next;
    12                 /* Insert cur -> next after pre.*/
    13                 ListNode* temp = pre -> next;
    14                 pre -> next = cur -> next;
    15                 cur -> next = cur -> next -> next;
    16                 pre -> next -> next = temp;
    17                 /* Move pre back to new_head. */
    18                 pre = new_head;
    19             }
    20             else cur = cur -> next;
    21         }
    22         ListNode* res = new_head -> next;
    23         delete new_head;
    24         return res;
    25     }
    26 };
  • 相关阅读:
    HDU 5059 Help him
    HDU 5058 So easy
    HDU 5056 Boring count
    HDU 5055 Bob and math problem
    HDU 5054 Alice and Bob
    HDU 5019 Revenge of GCD
    HDU 5018 Revenge of Fibonacci
    HDU 1556 Color the ball
    CodeForces 702D Road to Post Office
    CodeForces 702C Cellular Network
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4609119.html
Copyright © 2011-2022 走看看