|
7 | 7 | - lists[i] is sorted in ascending order.
|
8 | 8 | - The sum of lists[i].length will not exceed 10^4
|
9 | 9 |
|
10 |
| -Time Complexity: |
11 |
| -- |
| 10 | +Time Complexity: O(N log k) |
| 11 | +- N์ ๋ชจ๋ ๋
ธ๋์ ์ด ๊ฐ์, k๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ์ |
| 12 | +- ํ ์ฐ์ฐ์ log k ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ , ์ด๋ฅผ N๋ฒ ์ํํจ |
12 | 13 |
|
13 |
| -Space Complexity: |
14 |
| -- |
| 14 | +Space Complexity: O(k) |
| 15 | +- ํ์๋ ํญ์ k๊ฐ์ ๋
ธ๋๋ง ์ ์ฅ๋จ |
15 | 16 |
|
16 | 17 | ํ์ด๋ฐฉ๋ฒ:
|
17 |
| -1. |
| 18 | +1. ์ต์ ํ์ ์ฌ์ฉํ์ฌ k๊ฐ์ ์ ๋ ฌ๋ ๋ฆฌ์คํธ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ณํฉํ๋ ์๊ณ ๋ฆฌ์ฆ |
| 19 | +2. ๊ฐ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ๋
ธ๋๋ฅผ ํ์ ๋ฃ๊ณ ์์ํจ |
| 20 | +3. ํ์์ ๊ฐ์ฅ ์์ ๊ฐ์ ๊ฐ์ง ๋
ธ๋๋ฅผ ๊บผ๋ด์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐ |
| 21 | +4. ๊บผ๋ธ ๋
ธ๋์ ๋ค์ ๋
ธ๋๋ฅผ ๋ค์ ํ์ ๋ฃ์ |
| 22 | +5. ์ด ๊ณผ์ ์ ํ์ด ๋น ๋๊น์ง ๋ฐ๋ณตํจ |
| 23 | +
|
| 24 | +Note: ์ด ๋ฌธ์ ๋ ํ๊ธฐ ์ด๋ ค์์ ํ์ด๋ฅผ ๋ณด๊ณ ๊ณต๋ถํ์ต๋๋ค. ๋ณต์ต ํ์ |
18 | 25 | """
|
| 26 | +# Definition for singly-linked list. |
| 27 | +# class ListNode: |
| 28 | +# def __init__(self, val=0, next=None): |
| 29 | +# self.val = val |
| 30 | +# self.next = next |
| 31 | +class Solution: |
| 32 | + def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]: |
| 33 | + min_heap = [] |
| 34 | + |
| 35 | + for i, l in enumerate(lists): |
| 36 | + if l: |
| 37 | + heapq.heappush(min_heap, (l.val, i, l)) |
| 38 | + |
| 39 | + head = point = ListNode(0) |
| 40 | + |
| 41 | + while min_heap: |
| 42 | + val, i, node = heapq.heappop(min_heap) |
| 43 | + point.next = node |
| 44 | + point = point.next |
| 45 | + |
| 46 | + if node.next: |
| 47 | + heapq.heappush(min_heap, (node.next.val, i, node.next)) |
| 48 | + |
| 49 | + return head.next |
0 commit comments