如果我有一個像這樣的數組:查找數組中的重複數據的位置
int [] numb = {0,1,2,3};
我想找到數組的最小值。我只是做一個簡單的循環來找到它,但如果我有重複的最小值,如:
int [] numb = {0,1,0,2,3};
如何查找所有最小值的位置以及它在數組中顯示的次數?
如果這個問題已被問到,我沒有找到它,但隨時引導我到正確的線程/問題。
如果我有一個像這樣的數組:查找數組中的重複數據的位置
int [] numb = {0,1,2,3};
我想找到數組的最小值。我只是做一個簡單的循環來找到它,但如果我有重複的最小值,如:
int [] numb = {0,1,0,2,3};
如何查找所有最小值的位置以及它在數組中顯示的次數?
如果這個問題已被問到,我沒有找到它,但隨時引導我到正確的線程/問題。
此代碼你在短短的一個循環需要exept。它也不要求你以最初的'最小'值進行硬編碼。
int[] values = {6, 2, 4, 3, 1, 1, 7, 2, 1};
Integer minimum = null;
List<Integer> indexes = new ArrayList<Integer>();
for(int i = 0; i < values.length; i++)
{
if(minimum == null || values[i] < minimum)
{
minimum = values[i];
indexes.clear();
indexes.add(i);
}
else if(minimum == values[i])
{
indexes.add(i);
}
}
System.out.println("The minimum was: " + minimum);
System.out.println("It occurred " + indexes.size() + " times in the array");
System.out.println("Indexes it occured at were: " + Arrays.toString(indexes.toArray(new Integer[]{})));
這是完美的!謝謝!現在我知道如何解決這個問題。 –
當你罰款一個元素不要從循環中斷,而是增加一個計數器來計算它在數組中重複的次數。並跟蹤它出現的所有地方。或者讓你的方法返回的是第一個元素被發現索引,然後再次運行同樣的方法在較高的指數
int[] array = {0, 1, 0, 2, 3}
int mininum=999999 //initialize to a number larger than anything in the array would reasonably be
for (int curr = 0; curr < array.size; curr++) {
if (array1[curr] < minimum) {
minimum = array[i];
}
}
int duplicates = 0;
for (int i : array){
if (i == minumum){
duplicates++;
}
}
嘗試使用番石榴庫multiset。
如果你不會使用它,例如參見以下鏈接 http://www.zparacha.com/minimum-maximum-array-value/
我認爲你將不得不寫第二個for循環找到'min' – frickskit
@frickskit數和指數不一定 - 看到我的回答:) – Catchwa
@Catchwa upvoted。 – frickskit