热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何检查整数是否在给定范围的集合中?》经验,为你挑选了1个好方法。

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

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

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



1> Stephen C..:

执行此操作的时间有效方法是Bitset为所有集合中的所有整数创建一个位集.然后,您可以通过一次O(1)通话测试会员资格.

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

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


推荐阅读
author-avatar
执信电影频道
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有