我编写了一个(迄今为止不完整的)方法,该方法应采用一组int,找到相邻单元格之间的差异,然后返回最小的差异。
例如:
[9,16,4,8,20] - > 7,12,4,12 - > 4
[12,21,33,6,3,3] - > 9,12,27,3,0-> 0
这是我的方法:
public static int minGap(int[] a) {
int gap = 0;
for (int i = 0 ; i < (a.length - 1) ; i++) {
gap = Math.abs(a[i + 1] - a[i]);
System.out.println(gap);
}
return gap;
}
我相信我的中间步骤是正确的(找到差异),但我无法弄清楚如何比较所有它们并产生最小的一个。我假设我将使用if语句,但我只有一个变量&#34; gap&#34;与...合作。
请告诉我你的建议。
答案 0 :(得分:2)
为目前为止发现的最小间隙引入一个新变量。它可以初始化为巨大的东西,可能是Integer.MAX_VALUE
。
在循环中,如果当前间隙小于到目前为止找到的最小间隙,则将到目前为止找到的最小间隙设置为当前间隙。然后在for
循环完成后,您的间隙最小。
答案 1 :(得分:0)
只需添加一个min变量并根据需要进行更新。
public static int minGap(int[] a) {
int gap = 0;
int min = 0;
for (int i = 0 ; i < (a.length - 1) ; i++) {
gap = Math.abs(a[i + 1] - a[i]);
if (i==0 || gap < min) min = gap;
System.out.println(gap);
}
return min;
}