我有一个排序数组。我们说它是int [] numArr=new int[]{6, 9, 10, 27};
最小距离介于9和10之间,它是1.程序应该打印1。
我不期待代码,但我希望有人可以告诉我如何继续。
答案 0 :(得分:2)
声明一个变量来保持当前的最小距离。它可以初始化为一个非常大的数字Integer.MAX_VALUE
,以便计算出的第一个距离成为初始最小距离。
使用for
循环遍历值。您将访问当前索引和下一个索引处的元素,因此请尽早停止for
循环以阻止ArrayIndexOutOfBoundsException
。
在for
循环中,计算差异。如果差值小于当前最小值,则将当前最小值更新为当前差值。
答案 1 :(得分:0)
public static final int findSmallestDistance(final int[] pArray) {
int lMinimumDistance = Integer.MAX_VALUE;
for(int i = 1; i < pArray.length; i++) {
int lDifference = pArray[i] - pArray[i - 1];
if(lDifference < lMinimumDistance) {
lMinimumDistance = lDifference;
}
}
return lMinimumDistance;
}
答案 2 :(得分:0)
第1步:创建一个变量来保存实际的最小距离
第2步:遍历您的数组
第3步:将您的实际数字与数组中的前一个数字进行比较(如果这是第一个跳过此步骤的元素),如果它小于您的最小值,则保存结果
第4步:如果数组中有更多元素,请获取下一个元素,否则打印结果
答案 3 :(得分:0)
这是一些伪代码:
最小=一个肯定大于你正在寻找的数字
对于除第一个
之外的数组中的每个元素Be n = array[i] - array[i-1]
If n < smallest then
smallest = n
End If
结束
答案 4 :(得分:0)
int numArr[] = {6, 9, 10, 27};
for(int i=0;i<numArr.length-1;i++){
if(numArr[i+1]-numArr[i]>0){
System.out.println("distance between " +numArr[i]+ " and "+numArr[i+1]+ " is: "+ (numArr[i+1]-numArr[i]));
}
}
答案 5 :(得分:-2)
int smallest = 100000
for (int i = 0; i < array.length; i++)
if(array[i+1]-array[i]<smallest)
{
smallest = array[i+1]-array[i];
}
System.out.println(smallest);