[Leetcode] 21. Merge Two Sorted Lists
https://leetcode.com/problems/merge-two-sorted-lists/두 개의 정렬된 Linked List가 주어졌을 때, 이를 정렬된 하나의 Linked List로 만드는 문제
- 각 list의 노드 개수는 [0, 50]이다.
- list1과 list2는 모두 non-decreasing 순으로 정렬되어 있다.
Example 1
- Input : list1 = [1, 2, 4], list2 = [1, 3, 4]
- Output : [1, 1, 2, 3, 4, 4]
Example 2
- Input : list1 = [], list2 = []
- Output : []
Example 3
- Input : list1 = [], list2 = [0]
- Output : [0]
Note
- next가 None이 아닐 때까지 값을 하나씩 비교
- 하나의 리스트가 끝나면 다른 리스트의 남은 부분을 결과 리스트의 뒤에 붙인다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
res = ListNode(-1)
head = res
while l1 and l2 :
if l1.val < l2.val :
head.next = ListNode(l1.val)
head = head.next
l1 = l1.next
else :
head.next = ListNode(l2.val)
head = head.next
l2 = l2.next
if l1 :
head.next = l1
if l2 :
head.next = l2
return res.next