※ 引述《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也能写的题目
struct ListNode* mergeInBetween(struct ListNode* list1, int a, int b, struct L
istNode* list2){
struct ListNode *dummy_head = malloc(sizeof(struct ListNode));
struct ListNode *start, *end;
int count=0;
dummy_head->next = list1;
while(count!=b+2){
dummy_head = dummy_head->next;
count++;
if(count==a)
start = dummy_head;
}
end = dummy_head;
start->next = list2;
while(list2->next){
list2 = list2->next;
list2->next = end;
return list1;
}