leetcode - 1669. Merge In Between Linked Lists

Description

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 indicate the result:

Build the result list and return its head.

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.

Constraints:

复制代码
3 <= list1.length <= 10^4
1 <= a <= b < list1.length - 1
1 <= list2.length <= 10^4

Solution

No other comments, just do simulation.

Time complexity: o ( n 1 + n 2 ) o(n1+n2) o(n1+n2)

Space complexity: o ( 1 ) o(1) o(1)

Code

python3 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def mergeInBetween(self, list1: ListNode, a: int, b: int, list2: ListNode) -> ListNode:
        a_node, b_node = list1, list1
        b -= a - 1
        while a > 1:
            a_node = a_node.next
            a -= 1
        b_node = a_node.next
        while b > 0:
            b_node = b_node.next
            b -= 1
        a_node.next = list2
        list2_end = list2
        while list2_end.next:
            list2_end = list2_end.next
        list2_end.next = b_node
        return list1
相关推荐
元亓亓亓3 分钟前
LeetCode热题100--76. 最小覆盖子串--困难
算法·leetcode·职场和发展
CHANG_THE_WORLD7 分钟前
C++数组地址传递与数据影响:深入理解指针与内存
算法
json{shen:"jing"}8 分钟前
力扣-单词拆分
数据结构·算法
aaa78716 分钟前
Codeforces Round 1080 (Div. 3) 题解
数据结构·算法
浮生09191 小时前
DHUOJ 基础 85 86 87
数据结构·c++·算法
say_fall1 小时前
双指针算法详解:从原理到实战(含LeetCode经典例题)
算法·leetcode·职场和发展
追随者永远是胜利者1 小时前
(LeetCode-Hot100)33. 搜索旋转排序数组
java·算法·leetcode·职场和发展·go
你怎么知道我是队长2 小时前
计算机系统基础3---值的表示2---定点数与浮点数的介绍
算法
云深处@2 小时前
【数据结构】栈
数据结构·算法
啊我不会诶2 小时前
Codeforces Round 1076 (Div. 3) vp补题
算法·深度优先