【发布时间】:2014-12-05 11:11:29
【问题描述】:
假设我们有一组 N 个范围,(A1, B1) (A2, B2) (A3, B3) ... (An, Bn),其中 Ai 表示起点,Bi 表示终点范围。 (Ai、Bi为正整数)
我们如何使用二分搜索检查给定的整数,比如 X,是否存在于 N 个范围中的至少一个范围内?
我的做法:
先按 x 坐标再按 y 坐标对范围进行排序。
找到大于或等于 X 的最小 x 坐标。
检查是否满足该范围。
如果是,我们有解决方案。
现在,如果该范围不包含 X,我的下一步应该是什么?
或者,解决方案应该完全不同吗?
【问题讨论】:
-
您需要对数据进行预处理,使范围不相交(通过合并重叠范围)并进行排序。你可以做到这一点是 O(n log n) 时间。然后可以使用二分搜索来测试一个点是否在至少一个范围内。
标签: algorithm sorting binary-search