거누의 개발노트
파이썬 알고리즘 - 두 정렬 리스트의 병합 (*) 본문
반응형
문제
정렬되어 있는 두 연결 리스트를 합쳐라
입력
1->2->4
1->3->4
출력
1->1->2->3->4->4
책에 있는 코드
class solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if (not l1) or (l2 and l1.val > l2.val):
l1, l2 = l2, l1
if l1:
l1.next = self.mergeTwoLists(l1.next, l2)
return l1
찾은 코드
# 이해하기 쉬운 풀이
def mergeTwoLists(list1, list2):
if (list1 == None and list2 == None): return None
head = result = ListNode()
while (list1 or list2):
if (list1 == None):
result.val = list2.val
result.next = list2.next
break
if (list2 == None):
result.val = list1.val
result.next = list1.next
break
else:
if (list1.val <= list2.val):
result.val = list1.val
result.next = ListNode()
result = result.next
list1 = list1.next
else:
result.val = list2.val
result.next = ListNode()
result = result.next
list2 = list2.next
return head
https://leetcode.com/problems/merge-two-sorted-lists/
회고
다시 풀어보기!
잘 이해가 안된다.
반응형
'코딩테스트' 카테고리의 다른 글
파이썬 알고리즘 - 유효한 괄호 (0) | 2022.05.16 |
---|---|
파이썬 알고리즘 - 역순 연결 리스트 (0) | 2022.05.15 |
파이썬 알고리즘 인터뷰 - 배열 파티션 I (0) | 2022.05.15 |
파이썬 알고리즘 인터뷰 - 세 수의 합 (0) | 2022.05.15 |
파이썬 알고리즘 인터뷰 - 가장 긴 팰린드롬 부분 문자열 (*) (0) | 2022.05.15 |
Comments