두 정렬 리스트의 병합
정렬되어 있는 두 연결 리스트를 합쳐라
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 |