在数组中查找两个最小值的索引

Nau*_*uto 0 java arrays

我有一个包含数字的数组.

我在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)

Gho*_*ica 5

除了局部变量保持最低值,你需要的指标变量,太.

您可以使用0/1对它们进行初始化,并在更改其他变量时更新它们.

进一步思考:另一个选项在没有更多变量的情况下工作.存储值+索引很方便(虽然评论是正确的,你可能会使用一个不同的类来做),但不是强制性的.因为当你有索引时总是可以获取!

从这个意义上讲:你可以改变你的代码来记住indixes.