[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
에 삽입
반성
- 연결 리스트에 대해 완전히 이해하고 있다고 생각했는데, 막상 연결리스트를 활용한 알고리즘 문제를 풀어보니 이해도가 낮아 버벅임이 있었다. 모든 이론적인 부분에 대한 이해만 하고 있는 상황에서 완전하게 내 것으로 만들 필요가 있다.