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