如何检查整数是否在给定范围的集合中? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查整数是否在给定范围的集合中? [关闭]相关的知识,希望对你有一定的参考价值。

假设有一大堆范围。例如,大小为5000的集合:

[100,200],[1,59],[3,5],[70,70]...

如何在Java中检查整数n是否有效地落入这些范围中的至少一个?

答案

这样做的时间有效的方法是创建一个Bitset,其中包含所有集合中所有整数的位集。然后,您可以使用单个O(1)调用来测试成员资格。

问题是如果整数的组合范围很大,那么Bitset将占用大量内存。

第二种方法是组合重叠范围,并构造一个TreeMap<Integer, Integer>,其中键是下限,值是每个组合范围的上限。然后使用TreeMap::floorKey和测试来找到匹配的范围。这个程序是O(logN),其中N是组合范围的数量。空间使用将是O(N)

以上是关于如何检查整数是否在给定范围的集合中? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查一个整数是不是在 PHP 中的数字范围内?

给定一些整数范围,从每个范围中找到一个包含至少一个整数的最小集合

如何在Python 3中检查给定数字是不是是阶乘[关闭]

如何检查整数是不是在范围内?

如何检查整数是偶数还是奇数? [关闭]

C如何检查内存地址是不是仍在范围内[关闭]