632. Smallest Range Covering Elements from K Lists
## 思路
类似merge k list
先把k个list都加到heap (arr[0], i, 0)
再逐次pop出来(curr_min)
如果第i个list还有值就push进来并更新curr_max
## Code
```python
class Solution:
def smallestRange(self, nums: List[List[int]]) -> List[int]:
heap = [(arr[0], idx, 0) for idx, arr in enumerate(nums)]
heapq.heapify(heap)
range_min, range_max = float('-inf'), float('inf')
curr_max = max(arr[0] for arr in nums)
while heap:
curr_min, i, j = heapq.heappop(heap)
if curr_max - curr_min < range_max - range_min:
range_min, range_max = curr_min, curr_max
if j == len(nums[i])-1:
break
curr_max = max(curr_max, nums[i][j+1])
heapq.heappush(heap, (nums[i][j+1], i, j+1))
return [range_min, range_max]
```