leetcode刷題.143. 重排連結串列.每日打卡
程式碼:
class Solution {
public:
/* 連結串列反轉 */
ListNode* reverse(ListNode* head) {
if (nullptr == head)
return head;
ListNode* p1 = nullptr, * p2 = head;
ListNode* p3 = p2->next;
while (nullptr != p3) {
p2->next = p1;
p1 = p2;
p2 = p3;
p3 = p3->next;
}
p2->next = p1;
return p2;
}
/* 兩個連結串列交叉合併 */
void merge(ListNode* p1, ListNode* p2) {
if (nullptr == p2)
return;
ListNode* pp1 = p1, * pp2 = p2;
ListNode* pp3 = pp1->next;
ListNode* pp4 = pp2->next;
while (nullptr != pp1 && nullptr != pp2) {
pp1->next = pp2;
pp2->next = pp3;
pp1 = pp3;
pp2 = pp4;
if(nullptr != pp3) pp3 = pp3->next;
if(nullptr != pp4) pp4 = pp4->next;
}
}
void reorderList(ListNode* head) {
if (nullptr == head)
return;
ListNode* p1 = head, * p2 = head;
while (nullptr != p2) {
p2 = p2->next;
if (nullptr != p2) {
p2 = p2->next;
p1 = p1->next;
}
}
if (nullptr == p1) {
return;
}
p2 = p1->next;
p1->next = nullptr;
/* 對後半段連結串列進行反轉,p2 */
ListNode* last = reverse(p2);
/* 交叉合併 */
merge(head, last);
}
};
相關文章
- 143. 重排連結串列
- LeetCode-143-重排連結串列LeetCode
- 【1月打卡~Leetcode每日一題】86. 分隔連結串列(難度:中等)LeetCode每日一題
- 力扣(LeetCode) -143 重排連結串列力扣LeetCode
- leetcode刷題.763. 劃分字母區間.每日打卡LeetCode
- LeetCode 143 重排連結串列 HERODING的LeetCode之路LeetCode
- LeetCode刷題記125-148. 排序連結串列LeetCode排序
- LeetCode每日一題:連結串列的中間結點(No.876)LeetCode每日一題
- 每日leetcode——160. 相交連結串列LeetCode
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- LeetCode每日一題:反轉連結串列(No.206)LeetCode每日一題
- LeetCode連結串列專題LeetCode
- Leetcode刷題之連結串列增加頭結點的字首節點LeetCode
- 【C++ 資料結構:連結串列】二刷LeetCode707設計連結串列C++資料結構LeetCode
- 【連結串列問題】打卡8:複製含有隨機指標節點的連結串列隨機指標
- [每日一題] 第二題:反轉連結串列每日一題
- 每日leetcode——142. 環形連結串列 IILeetCode
- L2-022 重排連結串列
- Leetcode_86_分割連結串列_連結串列LeetCode
- 【LeetCode】->連結串列->通向連結串列自由之路LeetCode
- 【連結串列問題】打卡10:將搜尋二叉樹轉換成雙向連結串列二叉樹
- leetcode題目解析(js)--連結串列LeetCodeJS
- 每日leetcode——21. 合併兩個有序連結串列LeetCode
- leetcode每日一題—19.刪除連結串列的倒數第N個結點LeetCode每日一題
- LeetCode每日一題:刪除連結串列中的節點(No.237)LeetCode每日一題
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- LeetCode-Python-86. 分隔連結串列(連結串列)LeetCodePython
- (連結串列)連結串列的排序問題排序
- LeetCode-連結串列LeetCode
- L2-022 重排連結串列【陣列】陣列
- [每日一題] 第九題:從尾到頭列印連結串列每日一題
- pta重排連結串列(一個很清晰的實現,完全模擬連結串列的實現)
- LeetCode 第 86 號問題:分割連結串列LeetCode
- LeetCode 連結串列解題彙總 Java版LeetCodeJava
- 連結串列專題——面試中常見的連結串列問題面試
- leetcode 反轉連結串列LeetCode
- LeetCode 86 ——分隔連結串列LeetCode
- LeetCode 刷題日記 19. 刪除連結串列的倒數第N個節點LeetCode