[leetcode / 21] Merge Two Sorted Lists


날짜: 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
파이썬 알고리즘 인터뷰 8-2

풀이 과정

if (not l1) or (l2 and (l1.val > l2.val))

  • l1.vall2.val보다 크고, l2가 None이 아니거나
  • l1이 None이라면
    • l1l2를 스왑하고
  • l1이 None이 아니라면
    • l1.nextl2에 대해 재귀한 값을 l1.next에 삽입

반성

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




© 2021. by hminkim