我正在寻找一种算法,该算法将搜索具有相同长度的两组数字的进展变化。该集始终以相同的数字开始。例如:
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 :(得分:0)
由于您只关心第一个和最后一个偏差,您可以从列表的前面搜索,直到找到第一个偏差(如果您没找到,那么您显然不需要执行第二步) ,然后从列表末尾搜索,直到找到最后一个,或到达找到第一个的位置(在这种情况下只有1个偏差)。
但是,我不相信你可以在没有任何线性搜索的情况下做到这一点,在最坏的情况下,你最终不得不检查每一个偏差。