【每日一题】【中等】1669. 合并两个链表

Lan
Lan
2023-01-30 / 0 评论 / 43 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年01月30日,已超过461天没有更新,若内容或图片失效,请留言反馈。

题目

给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。

请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。

下图中蓝色边和节点展示了操作后的结果:
www.lanol.cn

请你返回结果链表的头指针。
示例 1:
www.lanol.cn
输入:list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]
输出:[0,1,2,1000000,1000001,1000002,5]
解释:我们删除 list1 中下标为 3 和 4 的两个节点,并将 list2 接在该位置。上图中蓝色的边和节点为答案链表。
示例 2:
www.lanol.cn
输入:list1 = [0,1,2,3,4,5,6], a = 2, b = 5, list2 = [1000000,1000001,1000002,1000003,1000004]
输出:[0,1,1000000,1000001,1000002,1000003,1000004,6]
解释:上图中蓝色的边和节点为答案链表。
提示:

3 <= list1.length <= 104
1 <= a <= b < list1.length - 1
1 <= list2.length <= 104
通过次数31,394提交次数40,952

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/merge-in-between-linked-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法

自己写的,顺序法

www.lanol.cn

class Solution:
    def mergeInBetween(self, list1: ListNode, a: int, b: int, list2: ListNode) -> ListNode:
        index = 0
        temp = ListNode(0)
        result = temp
        while list1:
            if index == a:
                while list2:
                    result.next = list2
                    result = result.next
                    list2 = list2.next
            elif index < a or index > b:
                result.next = list1
                result = result.next
            index += 1
            list1 = list1.next
        return temp.next
0

评论 (0)

取消