我有一个包含数字的数组。
我在 O(N) 时间内获得了该数组的两个最小值(可以是相同的数字),但是我不知道如何获取这两个值的索引。
例如:在 {1,2,3,1,5} 中,答案将是索引 0 和索引 3。这是我正在使用的代码:
public static void minMin(int arr[]){
int min1 = weights[0], min2 = weights[1];
if(min1 > min2){
int temp = min1;
min1 = min2;
min2 = temp;
}
for (int i = 2; i < weights.length; i++) {
if(weights[i] < min1){
int temp = min1;
min1 = weights[i];
min2 = temp;
}else if(weights[i] < min2){
min2 = weights[i];
}
}
}
最佳答案
除了保持最小值的局部变量之外,您还需要索引变量。
您可以使用 0/1 来启动它们,并在更改其他变量时更新它们。
进一步思考这一点:另一种选择无需更多变量即可工作。存储值+索引很方便(尽管注释是正确的,您可能会使用不同的类来做到这一点),但不是强制性的。因为当您有索引时,您始终可以获取值!
从这个意义上说:您可以更改代码以仅记住索引。
关于java - 查找数组中两个最小值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44356623/