我有一個排序的數組。比方說,這是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