我有一个包含数字的数组.
我在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];
}
}
}
Run Code Online (Sandbox Code Playgroud)
除了局部变量保持最低值,你需要的指标变量,太.
您可以使用0/1对它们进行初始化,并在更改其他变量时更新它们.
进一步思考:另一个选项在没有更多变量的情况下工作.存储值+索引很方便(虽然评论是正确的,你可能会使用一个不同的类来做),但不是强制性的.因为当你有索引时总是可以获取值!
从这个意义上讲:你可以改变你的代码来记住indixes.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |