- 문제 링크: https://leetcode.com/problems/merge-two-sorted-lists/

- 난이도: Easy

 

오름차순 정렬된 두 링크드리스트를 하나로 합치는 문제다

반환할 리스트의 시작지점 저장해두기 위한 변수를 하나 만들어 두고, 각 리스트 앞에부터 시작해서 작은 값 하나씩 리스트에 추가한다.

만약 둘중 한 리스트가 먼저 맨 뒤에 도달했다면, 그 뒤부터는 순회할 필요 없이 그냥 통째로 붙이면 된다.

 

class Solution:
    def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
        head = curr = ListNode()

        while list1 and list2:
            if list1.val < list2.val:
                curr.next = list1
                list1 = list1.next
            else:
                curr.next = list2
                list2 = list2.next
            curr = curr.next

        # remaining
        curr.next = list1 or list2

        return head.next

 

반응형