我有一个接收数组的方法
public static int getMissed(int[] array) {...}
例如它将是{1,3,5,7,11} 如你所见,错过了4d元素,它应该是9。
例如,数组的大小未知且步骤未知,我怎样才能找到错过的元素? 我不知道。这是我的测试任务中的问题,我无法解决它。
答案 0 :(得分:0)
我写这篇文章只是为了给出一个解决方案。我相信会有更好的答案。
public static int getMissed(int[] array) {
int difference, difference_2;
if (array.length < 3) // we need at least 3 elements
return -1;
difference = array[1] - array[0];
difference_2 = array[2] - array[1];
if (difference == difference_2) {
for (int i = 3; i < array.length; i++) {
if (array[i] - array[i - 1] != difference) {
return array[i] - difference;
}
}
}
else
{
if (difference > difference_2)
return array[1] - difference_2;
else
return array[2] - difference;
}
return -1;
}