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

标签 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];
       }
      }
}

最佳答案

除了保持最小的局部变量之外,您还需要索引变量。

您可以使用 0/1 来启动它们,并在更改其他变量时更新它们。

进一步思考这一点:另一种选择无需更多变量即可工作。存储值+索引很方便(尽管注释是正确的,您可能会使用不同的类来做到这一点),但不是强制性的。因为当您有索引时,您始终可以获取!

从这个意义上说:您可以更改代码以仅记住索引。

关于java - 查找数组中两个最小值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44356623/

相关文章:

java - 如何接收从alertDialog fragment 到实际 Activity 的是/否值?

java - 大型项目中监听器类的作用是什么

java - Spring Boot Maven 集成测试给出 ClassNotFoundException

python - python中三对角矩阵的解是什么?

javascript - 从动态数组中删除项目

ios - 按最近时间排序 TableView

java - 查询变量替换错误

javascript - 钛 Javascript : How to create dynamic eventListeners?

c - 如何仅针对特定行将文本文件中的单词读入数组?

java - 不包括零的范围内的随机数