亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++實現(xiàn)LeetCode(147.鏈表插入排序)

 更新時間:2021年07月28日 17:16:54   作者:Grandyang  
這篇文章主要介紹了C++實現(xiàn)LeetCode(147.鏈表插入排序),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

[LeetCode] 147. Insertion Sort List 鏈表插入排序

Sort a linked list using insertion sort.

A graphical example of insertion sort. The partial sorted list (black) initially contains only the first element in the list.
With each iteration one element (red) is removed from the input data and inserted in-place into the sorted list

Algorithm of Insertion Sort:

  1. Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list.
  2. At each iteration, insertion sort removes one element from the input data, finds the location it belongs within the sorted list, and inserts it there.
  3. It repeats until no input elements remain.

Example 1:

Input: 4->2->1->3
Output: 1->2->3->4

Example 2:

Input: -1->5->3->4->0
Output: -1->0->3->4->5

鏈表的插入排序實現(xiàn)原理很簡單,就是一個元素一個元素的從原鏈表中取出來,然后按順序插入到新鏈表中,時間復雜度為 O(n2),是一種效率并不是很高的算法,但是空間復雜度為 O(1),以高時間復雜度換取了低空間復雜度,參見代碼如下:

class Solution {
public:
    ListNode* insertionSortList(ListNode* head) {
        ListNode *dummy = new ListNode(-1), *cur = dummy;
        while (head) {
            ListNode *t = head->next;
            cur = dummy;
            while (cur->next && cur->next->val <= head->val) {
                cur = cur->next;
            }
            head->next = cur->next;
            cur->next = head;
            head = t;
        }
        return dummy->next;
    }
};

Github 同步地址:

https://github.com/grandyang/leetcode/issues/147

類似題目:

Sort List

Insert into a Cyclic Sorted List

參考資料:

https://leetcode.com/problems/insertion-sort-list/

https://leetcode.com/problems/insertion-sort-list/discuss/46423/Explained-C%2B%2B-solution-(24ms)

https://leetcode.com/problems/insertion-sort-list/discuss/46420/An-easy-and-clear-way-to-sort-(-O(1)-space-)

到此這篇關于C++實現(xiàn)LeetCode(147.鏈表插入排序)的文章就介紹到這了,更多相關C++實現(xiàn)鏈表插入排序內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C 指針和OC 對象之間的轉換方法

    C 指針和OC 對象之間的轉換方法

    這篇文章主要給大家介紹了關于C 指針和OC 對象之間的轉換方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-03-03
  • C++入門之vector的底層實現(xiàn)詳解

    C++入門之vector的底層實現(xiàn)詳解

    這篇文章主要為大家介紹了C++入門之vector的底層實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • OpenCV 輪廓周圍繪制矩形框和圓形框的方法

    OpenCV 輪廓周圍繪制矩形框和圓形框的方法

    這篇文章主要介紹了OpenCV 輪廓周圍繪制矩形框和圓形框,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • C語言中的5種簡單排序算法(適合小白)

    C語言中的5種簡單排序算法(適合小白)

    在編程練習時我們經常會遇到一些將一串亂序的數(shù)字排列成有序的數(shù)列(遞增,遞減)的問題,以此起到解決問題的效果,下面這篇文章主要給大家介紹了關于C語言中的5種簡單排序算法的相關資料,需要的朋友可以參考下
    2023-03-03
  • C語言簡明講解隊列的實現(xiàn)方法

    C語言簡明講解隊列的實現(xiàn)方法

    隊列(Queue)與棧一樣,是一種線性存儲結構,它具有如下特點:隊列中的數(shù)據元素遵循“先進先出”(First?In?First?Out)的原則,簡稱FIFO結構。在隊尾添加元素,在隊頭刪除元素
    2022-04-04
  • C# 使用反射來實現(xiàn)對象的深度復制方法

    C# 使用反射來實現(xiàn)對象的深度復制方法

    下面小編就為大家?guī)硪黄狢# 使用反射來實現(xiàn)對象的深度復制方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C++實現(xiàn)LeetCode(162.求數(shù)組的局部峰值)

    C++實現(xiàn)LeetCode(162.求數(shù)組的局部峰值)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(162.求數(shù)組的局部峰值),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • 用C語言實現(xiàn)單鏈表的各種操作(一)

    用C語言實現(xiàn)單鏈表的各種操作(一)

    本篇文章是對用C語言實現(xiàn)單鏈表的各種操作進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 深入了解C++中map用法

    深入了解C++中map用法

    下面小編就為大家?guī)硪黄钊肓私釩++中map用法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨想過來看看吧
    2016-06-06
  • C語言學生信息管理系統(tǒng)小項目

    C語言學生信息管理系統(tǒng)小項目

    這篇文章主要為大家詳細介紹了C語言學生信息管理系統(tǒng)小項目,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論