【发布时间】:2017-01-24 05:20:01
【问题描述】:
我有范围列表 { start, end } 和一个值(点),现在我正在寻找有效的方法来从存在给定值的范围中获取最后 n 个索引。
例如: 列表:[ { 0, 4 }, {5, 10 }, {11, 14 }, {15, 20} , {21, 25} ] n : 2 值:22
所以在这里,22 在范围 {21, 25} 中,它位于索引 4(基于 0)处。 由于 n 为 2,函数应返回 {11, 14 } 的索引,因为这是匹配范围的第 n 个范围。
在这里,我可以轻松编写二进制函数,因为我已经对范围列表进行了排序。但是我不想写 while / for ,我正在寻找一些 C++ 11 / 14 算法 / lambdas 如果有的话,可以解决这个问题。
什么是有效的解决方案?
【问题讨论】:
-
所以如果值是例如
17那么你会返回范围{5,10}(即“列表”中的索引 1)?? -
@JoachimPileborg 是的
-
这些范围是有序的、不重叠的并且不留空隙是偶然的吗?如果不是,那会改变方法,应该在问题中说明。