package interview;import com.list.listProblems.IsHuiWenList;import sun.reflect.generics.tree.Tree;import java.util.Comparator;import java.util.List;import java.util.TreeSet;public class SmallestRange {public static class Node {private int value;private int arrIndex;private int ownIndex;public Node(int value, int arrIndex, int ownIndex) {this.value = value;this.arrIndex = arrIndex;this.ownIndex = ownIndex;}}public static class NodeComparator implements Comparator<Node> {@Overridepublic int compare(Node o1, Node o2) {return o1.value != o2.value ? o1.value - o2.value : o1.arrIndex - o2.arrIndex;}}public int[] smallestRange(List<List<Integer>> nums) {int N = nums.size();TreeSet<Node> treeSet = new TreeSet<>(new NodeComparator());// TreeSet<Node> treeSet = new TreeSet<Node>((o1, o2) -> {// return o1.value != o2.value ? o1.value - o2.value : o1.arrIndex - o2.arrIndex;// });for (int i = 0; i < N; i++) {treeSet.add(new Node(nums.get(i).get(0), i, 0));}// boolean flag = false;int r = Integer.MAX_VALUE;int a = 0;int b = 0;while (treeSet.size() == N) {Node first = treeSet.first();Node last = treeSet.last();// if (!flag || last.value - first.value < b - a) {// flag = true;// b = last.value;// a = first.value;// }if (last.value - first.value < r) {r = last.value - first.value;b = last.value;a = first.value;}Node min = treeSet.pollFirst();int arrIndex = min.arrIndex;int ownIndex = min.ownIndex;if (ownIndex <= nums.get(arrIndex).size() - 2) {treeSet.add(new Node(nums.get(arrIndex).get(ownIndex + 1), arrIndex, ownIndex + 1));}}return new int[]{a, b};}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。