Re: [閒聊] 每日leetcode

作者: argorok (s.green)   2024-03-20 11:18:42
※ 引述《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;
}
};
作者: JIWP (JIWP)   2024-03-20 11:20:00
別卷了
作者: sustainer123 (caster)   2024-03-20 11:24:00
大師
作者: hduek153 (專業打醬油)   2024-03-20 11:38:00
卷起來了

Links booklink

Contact Us: admin [ a t ] ucptt.com