본문 바로가기

항해99 chap02

두 정렬 리스트의 병합

두 정렬 리스트의 병합

정렬되어 있는 두 연결 리스트를 합쳐라

class ListNode:
     def __init__(self, val=0, next=None):
         self.val = val
         self.next = next
     def print_all(self):
         while self:
             print(self.val, end=' ')
             self = self.next
         print()
from typing import Optional


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가 안비어있으면서 l1이 가르키는 게 l2가 가르키는 값보다 크고 )
            l1,l2 = l2,l1
        if l1:
            l1.next =self.mergeTwoLists(l1.next,l2)
        return l1

풀이

L1과 L2의 값을 비교해 작은 값이 왼쪽에 오게하고, next는 그다음 값이 엮이도록 재귀 호출한다.

두 연결 리스트 병합 과정

'항해99 chap02' 카테고리의 다른 글

홀짝 연결 리스트  (0) 2022.01.18
역순 연결 리스트  (0) 2022.01.18
배열 파티션  (0) 2022.01.18
그룹 애너그램  (0) 2022.01.18
가장 긴 펠린드롬 부분 문자열  (0) 2022.01.18