※ 引述《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;
}