[leetcode / 21] Merge Two Sorted Lists
in Problem Solving on leetcode
날짜: 2021년 8월 25일
카테고리: 연결 리스트
태그: Easy, 21, 파이썬
leetcode 21 - Merge Two Sorted Lists
입출력 예시
| 예제 입력 | 예제 출력 |
|---|---|
| l1 = [1,2,4], l2 = [1,3,4] | [1,1,2,3,4,4] |
| l1 = [], l2 = [] | [] |
| l1 = [], l2 = [0] | [0] |
코드
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeTwoLists(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
if (not l1) or (l2 and (l1.val > l2.val)):
l1, l2 = l2, l1
if l1:
l1.next = self.mergeTwoLists(l1.next,l2)
return l1
풀이 과정

if (not l1) or (l2 and (l1.val > l2.val))
l1.val이l2.val보다 크고,l2가 None이 아니거나l1이 None이라면l1과l2를 스왑하고
l1이 None이 아니라면l1.next와l2에 대해 재귀한 값을l1.next에 삽입
반성
- 연결 리스트에 대해 완전히 이해하고 있다고 생각했는데, 막상 연결리스트를 활용한 알고리즘 문제를 풀어보니 이해도가 낮아 버벅임이 있었다. 모든 이론적인 부분에 대한 이해만 하고 있는 상황에서 완전하게 내 것으로 만들 필요가 있다.
