Problem : https://leetcode.com/problems/merge-in-between-linked-lists
Difficulty : Medium
Status : Solved
Time : ??:??:??
Leetcode 1일 1출첵도 이제부턴 병행하려고 한다(LeetCode가 요구하는 문제 결이 국내 출제 문제와는 결이 다른 느낌? 백준 문제들이 슬슬 매너리즘이 오는 느낌도 있었다...)
링크드리스트 list1, list2를 순차적으로 탐색하면서, list1의 삭제할 부분들을 체크하고 이를 list2에 이어주면 된다. list1의 a-1번째 노드의 next가 list2의 head에, list2의 tail의 next가 list1의 b+1번째 노드가 되도록 연결하면 된다.
풀이 코드
# 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:
cur = list1
cnt = 0
while cur.next is not None :
if cnt == a-1 :
aPoint = cur
if cnt == b :
bPoint = cur.next
cur = cur.next
cnt += 1
aPoint.next = list2
while list2.next is not None :
list2 = list2.next
list2.next = bPoint
return list1