<--- 23. Merge k Sorted Lists --->
# 문제: k개의 정렬된 리스트를 1개의 정렬된 리스트로 병합하라.
입력
[ 1->4->5, 1->3->4, 2->6 ] |
출력
1->1->2->3->4->4->5->6 |
# 풀이
1. 우선순위 큐를 이용한 리스트 병합
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import heapq
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = None
def merge_lists(lists):
root = result = ListNode(None)
heap = []
for i in range(len(lists)):
if lists[i]:
heapq.heappush(heap, (lists[i].val, i, lists[i]))
while heap:
node = heapq.heappop(heap)
idx = node[1]
result.next = node[2]
result = result.next
if result.next:
heapq.heappush(heap, (result.next.val, idx, result.next))
return root.next
|
cs |
'Python' 카테고리의 다른 글
파이썬 알고리즘 인터뷰 - 30. 중복 문자 없는 가장 긴 부분 문자열 (0) | 2022.01.27 |
---|---|
파이썬 알고리즘 인터뷰 -29. 보석과 돌 (0) | 2022.01.25 |
파이썬 알고리즘 인터뷰 - 26. 원형 데크 디자인 (0) | 2022.01.24 |
파이썬 알고리즘 인터뷰 - 25. 원형 큐 디자인 (0) | 2022.01.24 |
파이썬 알고리즘 인터뷰 - 24. 스택을 이용한 큐 구현 (0) | 2022.01.24 |