Skip to content

Latest commit

 

History

History

1669.Merge-In-Between-Linked-Lists

题目

You are given two linked lists: list1 and list2 of sizes n and m respectively.

Remove list1's nodes from the ath node to the bth node, and put list2 in their place.

The blue edges and nodes in the following figure incidate the result:

https://assets.leetcode.com/uploads/2020/11/05/fig1.png

Build the result list and return its head.

Example 1:

https://assets.leetcode.com/uploads/2020/11/05/merge_linked_list_ex1.png

Input: list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002] Output: [0,1,2,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:

https://assets.leetcode.com/uploads/2020/11/05/merge_linked_list_ex2.png

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. 

Constraints:

  • 3 <= list1.length <= 104
  • 1 <= a <= b < list1.length - 1
  • 1 <= list2.length <= 104

题目大意

给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。请你将 list1 中第 a 个节点到第 b 个节点删除,并将list2 接在被删除节点的位置。

解题思路

  • 简单题,考查链表的基本操作。此题注意 a == b 的情况。

代码

funcmergeInBetween(list1*ListNode, aint, bint, list2*ListNode) *ListNode { n:=list1varstartRef, endRef*ListNodefori:=0; i<=b; i++ { ifi==a-1 { startRef=n } ifi==b { endRef=n } n=n.Next } startRef.Next=list2n=list2forn.Next!=nil { n=n.Next } n.Next=endRef.Nextreturnlist1 }
close