【发布时间】:2013-12-14 12:56:55
【问题描述】:
我有一个大数组说..数组[7000]。在每个索引处都有一个介于 0 和 9 之间的数字。然后给定两个索引说 x=100 , y= 105 我需要找到之间不同元素的数量给定的范围。 假设
array[100]=1;
array[101]=2;
array[102]=1;
array[103]=4;
array[104]=7;
array[105]=2;
现在这里不同元素的数量是 4 {即数字 1 ,2,1,7 }。 这可以通过在两个索引之间迭代并跟踪数字来计算。但我面临的主要问题是程序必须执行的查询数量非常大,即必须为几千个 x 和 y 值(比如 10^6 个查询),在这种情况下,这种方法将变得非常低效。有什么更好的算法,我尝试在很多地方搜索。
【问题讨论】:
-
7000 个条目听起来并不多。你不能预先计算范围吗?或预先计算子范围。还是缓存计算已经完成?
-
我更关心查询的数量,它们将是 10^6 范围,其中数组可以是 0 到 10000 之间的任何值。不超过 10000。
-
如果您每次查询的数组都相同,那么您一定会根据您执行的查询次数多次执行相同的查询。因此预计算或缓存会产生影响。
-
数组每次都是一样的。
-
@EbbeM.Pedersen 7000^2 约为 10^7,因此每个查询都可以是唯一的
标签: performance algorithm data-structures