2015-08-28 25 views
0

我正在寻找一种算法,它将搜索具有相同长度的两组数字的进度变化。该集始终以相同的数字开始。例如:用于查找两组数组进度变化的算法

Assumptions: 
1. Arrays 1 and 2 are the same length 
2. Progressions are not available at the start, and need to be computed. But computing it will be expensive with resources. 

Array 1 [1, 3, 5, 7, 10] 
Progression: +2, +2, +2, +3 

Array 2 [1, 2, 4, 6, 5] 
Progression: +1, +2, +2, -1 

Result: Array or numbers deviates on first progression by -1 and last progression by -4. 

有没有办法做到这一点,而不诉诸任何类型的线性搜索?

+0

只需要考虑两个数组之间进展差异的结果,只考虑它们的第一个和最后一个索引? – ThisClark

+0

不只是考虑第一个和最后一个索引。我在想,如果有一种类似于二进制搜索算法的东西,我可以用它来确定,给定两个长度相同的数组,他们的进程有哪些不同。 –

回答

0

由于您只关注第一个和最后的偏差,你可以从列表中的前搜索,直到找到第一个差(如果你没有找到一个,那么你显然不需要做第二步),然后从列表末尾搜索,直到找到最后一个,或者到达找到第一个的位置(在这种情况下,只有一个偏差)。

不过,我不相信你能做到这一点,没有任何类型的线性搜索,在最坏的情况下,你最终不得不检查每一个偏差。