Algorithm/기본 알고리즘

leetcode 21. Merge Two Sorted Lists

용자대디 2022. 8. 28. 21:54

 

 

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def mergeTwoLists(self, list1, list2):
        """
        :type list1: Optional[ListNode]
        :type list2: Optional[ListNode]
        :rtype: Optional[ListNode]
        """
        
        if list1 is None:
            return list2
        
        if list2 is None :
            return list1
        
        head = None
        if list1.val < list2.val :
            head = list1
            list1 = list1.next                        
        else :
            head = list2
            list2 = list2.next            
        
        head.next = self.mergeTwoLists(list1, list2)
        return head

 

재귀로 푸는게 더 깔끔한 문제

 

list1 과 list2를 가지고 있고, 그 다음 재귀함수에서는 이미 한번 popleft()한 친구를 가지고 mergeTwoLists 진행

'Algorithm > 기본 알고리즘' 카테고리의 다른 글

boj-2164. 카드 2  (0) 2023.01.19
boj-11866. 요세푸스 문제  (0) 2023.01.19
[기본 알고리즘] Binary Search  (0) 2022.08.28
지도에서 상하좌우 움직이기  (0) 2022.08.27
leetcode 206. Reverse Linked List  (0) 2022.04.05