【发布时间】:2018-05-30 18:55:17
【问题描述】:
假设有一大组范围。例如大小为 5000 的集合:
[100,200],[1,59],[3,5],[70,70]...
如何在 Java 中有效地检查整数 n 是否在这些范围中的至少一个范围内?
【问题讨论】:
-
为什么你在这个问题上有一个python标签?
-
这些范围代表什么对象?长度为 2 的整数数组还是 Range 类?
-
合并任何重叠的范围,然后对它们进行排序。使用二分查找检查是否包含测试值。或者,如果域相当小,则构建一个位集,其中设置了所有位 100-200、1-59 等,然后使用
bitset.get(testValue)。 -
您如何解决问题取决于范围的上限和下限以及您必须测试多少项目才能获得成员资格。如果最高和最低可能范围界限相差一个“小”量(即小于 10,000),那么基于数组的解决方案可能是最好的。如果界限大得多,那么@AndyTurner 的建议将适用。您没有向我们提供足够的信息,也没有展示您的尝试。
标签: java algorithm data-structures hashmap