查找阵列中重复数据的位置

时间:2013-04-03 02:42:56

标签: java arrays

如果我有一个类似的数组:

int [] numb = {0,1,2,3};

我希望找到数组的最小值。我只是做一个快速简单的循环来找到它,但如果我有重复的最小值,例如:

int [] numb = {0,1,0,2,3};

如何找到所有最小值的位置以及它在阵列中显示的次数?

如果已经提出这个问题,我没有找到它,但随时可以指导我找到正确的主题/问题。

4 个答案:

答案 0 :(得分:1)

此代码只需一个循环即可完成所有操作。它也不要求您在初始“最小”值中进行硬编码。

    int[] values = {6, 2, 4, 3, 1, 1, 7, 2, 1};
    Integer minimum = null;
    List<Integer> indexes = new ArrayList<Integer>();
    for(int i = 0; i < values.length; i++)
    {
        if(minimum == null || values[i] < minimum)
        {
            minimum = values[i];
            indexes.clear();
            indexes.add(i);
        }
        else if(minimum == values[i])
        {
            indexes.add(i);
        }
    }
    System.out.println("The minimum was: " + minimum);
    System.out.println("It occurred " + indexes.size() + " times in the array");
    System.out.println("Indexes it occured at were: " + Arrays.toString(indexes.toArray(new Integer[]{})));

答案 1 :(得分:0)

当你对一个元素进行罚款时不要从循环中断开,而是递增一个计数器来计算它在数组中重复的次数。并跟踪它出现的所有地方。或者让你的方法返回找到的第一个元素的索引,然后再次运行相同的方法执行更高的索引

答案 2 :(得分:0)

 int[] array = {0, 1, 0, 2, 3}
 int mininum=999999       //initialize to a number larger than anything in the array would reasonably be
 for (int curr = 0; curr < array.size; curr++) {
     if (array1[curr] < minimum) {
          minimum = array[i];   
     }
 }
 int duplicates = 0;
 for (int i : array){
     if (i == minumum){
         duplicates++;
     }
 }

答案 3 :(得分:0)

尝试使用Guava库multiset。

如果您不使用它,请参阅此链接 http://www.zparacha.com/minimum-maximum-array-value/