1var smallestRange = function (nums) {2let minHeap = new MinPriorityQueue({3compare: (a, b) => a[0] - b[0],4});5let start = 0,6end = Infinity;7let maxSoFar = -Infinity;89for (let num of nums) {10minHeap.enqueue([num[0], 0, num]);11maxSoFar = Math.max(maxSoFar, num[0]);12}1314while (minHeap.size() == nums.length) {15let [num, i, list] = minHeap.dequeue();1617if (end - start > maxSoFar - num) {18start = num;19end = maxSoFar;20}2122if (list.length > i + 1) {23minHeap.enqueue([list[i + 1], i + 1, list]);24maxSoFar = Math.max(maxSoFar, list[i + 1]);25}26}2728return [start, end];29};