这是一个程序,只需返回最小值及其在数组中出现的时间。如果数组填充 {13, 28, 5, 11},则返回最小值为 5,计数为 1。但是,当数组填充给定数字时,它将计数返回为 2,而计数应为 1。我将如何解决这个问题?谢谢
public class Test4{
public static void main(String[] args){
int[] array = {4, 20, 30, 4, 25, 25, 6, 2, 29, 27, 1, 29, 11, 6, 10, 17, 8};
findMin(array);
}
public static void findMin(int[] array) {
if (array == null || array.length < 1)
return;
int count = 0;
int min = array[0];
for (int i = 1; i <= array.length - 1; i++) {
if (min > array[i]) {
min = array[i];
if(min == array[i]){
count++;
}
}
}
System.out.println("The minimum is: " + min +"n" + "The count is: " + count);
}
}
每当更改当前最小值时,都应将计数初始化为 1,并将计数重置为 1:
int count = 1; // initial count should be 1
int min = array[0];
for (int i = 1; i <= array.length - 1; i++) {
if (min > array[i]) {
// new minimum - reset count to 1
min = array[i];
count = 1;
} else if (min == array[i]) {
// same minimum - increment count
count++;
}
}