LeetCode自我總結(對鍊錶進行插入排序)

2021-08-22 02:20:36 字數 998 閱讀 3573

對鍊錶進行插入排序。

插入排序的動畫演示如上。從第乙個元素開始,該鍊錶可以被認為已經部分排序(用黑色表示)。

每次迭代時,從輸入資料中移除乙個元素(用紅色表示),並原地將其插入到已排好序的鍊錶中。

插入排序演算法:

插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。

每次迭代中,插入排序只從輸入資料中移除乙個待排序的元素,找到它在序列中適當的位置,並將其插入。

重複直到所有輸入資料插入完為止。

示例 1:

輸入:4->2->1->3輸出:1->2->3->4
示例 2:

輸入:-1->5->3->4->0輸出:-1->0->3->4->5
class solution

listnode* newhead=new listnode(-1);//常用技巧,新建頭結點

newhead->next=head;               

listnode* pre=newhead;//這個指標的目的是每一次找插入的位置都要從頭結點開始遍歷

listnode* current=head;//這個指標是當前我們需要操作的節點前乙個節點

while(current)

listnode* temp=pre->next; //為什麼不是current呢,因為不一定要插入的位置正好是current的前面,但一定插入在pre的後面

pre->next=current->next;

current->next=current->next->next;

pre->next->next=temp;

pre=newhead;

}else

}return newhead->next;}};

鍊錶leetcode總結 python

鍊錶是經典的遞迴定義的資料結構,鍊錶相關的題目常常考察遞迴,翻轉鍊錶是其中的經典題目。在思考遞迴問題的時候,我們要從上到下思考 編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點,你將只 被給定要求被刪除的節點 node.val node.next.val node.next node.nex...

LeetCode 鍊錶題總結

最近花了幾天時間,將鍊錶題除帶鎖外的題目做完了,下面對鍊錶題部分題目進行總結和分析。1 鍊錶反轉 2 快慢指標 遇到一些需要找到鍊錶的中點問題時,可能會有鍊錶長度為奇數或者偶數的情況,當長度為偶數時,模板裡面 prev 為第乙個中點,slow 為第二個中點,長度為奇數時 slow 為鍊錶的中點。1....

leetcode 反轉鍊錶問題總結

第一次被問反轉鍊錶是被位元組,我沒想出來。後來在劍指offer上面看到了,我沒做出來。在leetcode和牛客上遇見,是那麼的熟悉。今天的每日一題還是思路不清晰。我意識到,我是時候寫點什麼了。希望下次遇到的時候思路清晰,一招斃命。反轉鍊錶i 反轉鍊錶ii 反轉鍊錶i是把整個鍊錶都反轉,相對來說容易一...