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
Python Code:
# 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:
c = 0
left = None
right = None
tmp = ListNode(0)
tmp.next = list1
while right == None:
if c == a-1:
left = list1
if c == b+1:
right = list1
c += 1
list1 = list1.next
left.next = list2
while list2.next:
list2 = list2.next
list2.next = right
return tmp.next