<分区>
假设有 n
(整数)个长度为 l
( float )的连续段。即:
Segment 0 = [0, l)
Segment 1 = [l, 2*l)
Segment 2 = [2*l, 3*l)
...
Segment (n-1) = [(n-1)*l, n*l)
给定一个数字x
( float ),我想写一个函数
int getSegmentId(double x, double l, int n)
它返回 x
所在的段的 id。
我想通过检查 x
是否位于每个区间内来在 O(1) 中执行此操作,而不是 O(log(n))。
我认为这是一个非常普遍和常见的问题,我想有一个解决方案。你有什么提示给我吗?
附录
问题不在于像之前的 question 中那样该算法的特定实现基于浮点运算。我只是想问哪个最好 一个好的和稳健的方法来实现这个。