我有一个排序的数组。比方说,这是int [] numArr=new int[]{6, 9, 10, 27};
如何找到数组中相邻的两个数字之间的最小距离?
的最短距离是9和10之间,这是1.方案应打印此1.
我没想到的代码,但我希望有人可以给我一个如何进行的想法。
我有一个排序的数组。比方说,这是int [] numArr=new int[]{6, 9, 10, 27};
如何找到数组中相邻的两个数字之间的最小距离?
的最短距离是9和10之间,这是1.方案应打印此1.
我没想到的代码,但我希望有人可以给我一个如何进行的想法。
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);
如果最小的是100001,那么呢? – DavidGSola 2014-12-04 21:44:40
应该停在array.length-1以避免超出界限。 – 2014-12-04 21:44:52
我接受了你的答案,不是因为它的工作效率达到100%,而是你帮助我清除了这个概念。然而,array.length到达数组之外,因此我将其修改为array.length-1。我将最小整数定义为Integer.MAX_value。感谢您帮助我,xoxo。 – Simon 2014-12-04 22:39:48
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;
}
OP声明“我不期待直接编码”。 – rgettman 2014-12-04 21:39:42
查看选定的错误答案。 感谢您的不必要的downvote。 – 2014-12-07 18:27:57
声明一个变量来保存当前的最小距离。它可以被初始化为一个非常大的数字Integer.MAX_VALUE
,以便计算的第一个距离成为初始最小距离。
使用for
循环来循环这些值。您将访问当前索引处和下一个索引处的元素,因此请尽早停止for
循环以防止出现ArrayIndexOutOfBoundsException
。
在for
循环中计算差值。如果差值小于当前最小值,则将当前最小值更新为当前差值。
步骤1:创建一个变量来保存实际最小距离步骤2
:迭代通过您的阵列
步骤3:比较实际号码与先前的阵列上(如果这是第一个元素跳这一步),如果它小于你最小的保存结果
步骤4:我F中的阵有更多的元素,得到下一个,否则打印结果
下面是一些伪代码:
成为最小=一些肯定比你正在寻找
的一个更大对于每个元素i的阵列除了第
Be n = array[i] - array[i-1]
If n < smallest then
smallest = n
End If
END FOR
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]));
}
}
在数组上循环,检查'item [n] - item [n + 1]',假设一个升序数组,并存储最小的结果。 – 2014-12-04 21:38:33
'item [n] - item [n + 1]'会给你负号...... – kiwixz 2014-12-04 21:49:40