对于个人项目,我需要找到数组中三个最接近和最大数字的索引,但我找不到算法来做到这一点。
例如,如果数组是:
[1 2 3 59 70]
输出应为
[0 1 2]
或者如果数组是:
[3 6 7 49 50 51 79 81 100]
输出应为
[3 4 5]
有人有想法吗?在此先感谢您的帮助!
修改:
答案 0 :(得分:2)
您可以线性地遍历数组并检查差异。如果找到相同的差异,请更新当前解决方案:
minDistance = arr[2] - arr[0]
minIndex = 0
for i from 3 to n - 1
if(arr[i] - arr[i - 2] <= minDistance)
minIndex = i - 2
minDistance = arr[i] - arr[i - 2]
return { minIndex, minIndex + 1, minIndex + 2 }