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 };
  • 相关阅读:
    使用Git--将本地项目提交到Github
    海量数据处理面试题
    web前后端安全问题
    mysql关键字如何当字段使用
    一个Java项目开发流程(正规级别)
    开发工具idea中撤回代码和恢复撤销代码快捷键
    layui前端使用
    shiro标签
    常见SVN图标的含义
    最常见到的runtime exception 异常
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4609119.html
Copyright © 2011-2022 走看看