Python/알고리즘

[파이썬 알고리즘 인터뷰] 14. 두 정렬 리스트의 병합

AI 꿈나무 2021. 2. 15. 19:11
반응형

 

 이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다.

 

 출처 : 파이썬 알고리즘 인터뷰

 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브

 


14. 두 정렬 리스트의 병합

리트코드 21. Merge Two Sorted Lists 문제입니다.

 

 

풀이

 리트코드 디스커션에 직관적인 풀이가 있어서 가져와 봤습니다.

 

1. 반복문 풀이

def mergeTwoLists(self, l1, l2):
    dummy = cur = ListNode(0)
    while l1 and l2:
        if l1.val > l2.val:
            cur.next = l1
            l1 = l1.next
        else:
            cur.next = l2
            l2 = l2.next
        cur = cur.next
        
    cur.next = l1 or l2
    return dummy.next

 

2. 재귀 풀이

def mergeTwoLists(self, l1, l2):
    if not l1 or not l2:
        return l1 or l2
    
    if l1.val < l2.val:
        l1.next = self.mergeTwoLists(l1.next,l2)
        return l1
    else:
        l2.next = self.mergeTwoLists(l1, l2.next)
        return l2
반응형