Re: [閒聊] 每日leetcode

看板Marginalman作者 (死肥肥社管)時間2月前 (2024/03/20 11:18), 編輯推噓2(201)
留言3則, 3人參與, 2月前最新討論串63/325 (看更多)
※ 引述《sustainer123 (caster )》之銘言: : https://leetcode.com/problems/merge-in-between-linked-lists : 1669. Merge In Between Linked Lists : 給你兩個鏈表(list1 and list2)與兩個數字(a and b) : 你需要移除list1中a到b的節點並替換為list2 : Example 1: : Input: list1 = [10,1,13,6,9,5], a = 3, b = 4, list2 = : [1000000,1000001,1000002] : Output: [10,1,13,1000000,1000001,1000002,5] : Explanation: We remove the nodes 3 and 4 and put the entire list2 in their : place. The blue edges and nodes in the above figure indicate the result. : Example 2: : Input: list1 = [0,1,2,3,4,5,6], a = 2, b = 5, list2 = : [1000000,1000001,1000002,1000003,1000004] : Output: [0,1,1000000,1000001,1000002,1000003,1000004,6] : Explanation: The blue edges and nodes in the above figure indicate the : result. : 思路: : 遍歷list1 找到a-1和b+1節點 a-1節點指向list2的開頭 : 遍歷list2 找到list2的結尾 結尾指向b+1節點 : 回傳list1 找不到工作 來練一下C++ code 嗚嗚哇哇哇 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* mergeInBetween(ListNode* list1, int a, int b, ListNode* list2) { ListNode *it = list1, *tmp = list1; // find a-1th node for(int i = 0; i < a-1; ++i){ tmp = tmp->next; } it = tmp->next; tmp->next = list2; // find b-1th node and free nodes for(int i = 0; i < b-a; ++i){ tmp = it; it = it->next; delete tmp; } tmp = it->next; delete it; // traverse list2 it = list2; while(it->next != nullptr){ it = it->next; } it->next = tmp; return list1; } }; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.89.106 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1710904725.A.960.html

03/20 11:20, 2月前 , 1F
別卷了
03/20 11:20, 1F

03/20 11:24, 2月前 , 2F
大師
03/20 11:24, 2F

03/20 11:38, 2月前 , 3F
卷起來了
03/20 11:38, 3F
文章代碼(AID): #1b-bMLbW (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1b-bMLbW (Marginalman)