c++ - 查找输入数字以了解它在数组中的位置

标签 c++ arrays algorithm search


我有一个小算法问题。例如,我有一个数组。

array[10] = {23,54,10,63,52,36,41,7,20,22};

现在给定一个输入数字,例如 189,我想知道它应该位于哪个插槽中。 例如这个输入应该位于数组的第 4 个索引中,因为

23+54+10+63 = 150 and if we add 52 then sum will be 202 which will cover the range where 189 should lie. so the answer should be 4. 


我想找到一个摊销常数时间算法可能在第一步中我们对数组进行一些预处理,以便我们可以在常数时间内获得所有下一个查询。

输入的数字将始终介于 1 和数组中所有条目的总和之间
谢谢

最佳答案

如果您确实需要常数时间,请创建第二个数组,其大小是包含原始数组索引的最大总和值。所以 new_array[189] = 4;

关于c++ - 查找输入数字以了解它在数组中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13178180/

相关文章:

c++ - 函数模板重载解析,依赖和非依赖参数

c++ - SFINAE 关于具有默认参数的函数 - 自由函数与运算符()

c++ - 如何在图中找到 3 条边的负加权循环?

algorithm - 选择满足特定属性的随机数组元素

c++ - 参数化和 "function template partial specialization is not allowed"

c++ - 程序在一段时间后终止 "std::bad_alloc"

arrays - 关于 Delphi/Generic/array 的 : why this doesn't compile?

javascript - 从数组中删除一个对象,然后更新所有对象的属性

php:数组按字符串键排序

C:找到一个值所属的bin索引