在数组中查找对号

时间:2016-11-29 06:46:53

标签: java arrays

有一个包含多个数字的数组。其中在java中找出对号(在该数组中包含2次)。假设此数组2中的{2,5,7,8,2,3,5,6,5}包含2次,因此它是对号。

我试过这种方式:

HashMap<Integer, Integer> hmap = new HashMap<>();
  for (int i = 0; i < arr.length; i++)
    {
        Integer c = hmap.get(arr[i]);
        if (hmap.get(arr[i]) == null)
               hmap.put(arr[i], 1);
        else
          hmap.put(arr[i], ++c);
    }

5 个答案:

答案 0 :(得分:2)

你可以使用流

saveGIF({
    for (i in 1:10) plot(runif(10), ylim = 0:1)
})

答案 1 :(得分:1)

使用基元类型的程序

数[j] =&#39; 0&#39 ;; //这只是一个占位符

  int []num = {2,5,7,8,2,3,5,6};
        int counter = 0;
        for(int i=0;i<num.length-1;i++){
            for(int j=i+1;j<num.length && num[i]!=0;j++){
                if(num[i] == num[j]){
                    counter++;
                    num[j]= 0;
                }
            }
            if(counter==1)
                 System.out.println("pair found for: "+num[i]);
            counter = 0;
        }

答案 2 :(得分:0)

我可以想到两种方式。首先你可以使用一个地图,在这个方法中你可以把数组中的每个元素放在一个地图中,这样你每次迭代时都可以检查你是否已经将这个值插入到地图中。

第二种方法类似于排序,但您可以使用以下所有元素检查数组中的每个元素,一旦找到匹配项,就会返回并退出。这个方法比我想的map方法慢,但比先排序然后找到相邻的值要快。

答案 3 :(得分:0)

不发布实​​际代码,将其放在Map中并查找计数。但是你需要小心检查2s的计数。它不仅仅是2,所有4,6,8等计数也会导致成对(我认为到目前为止这个问题的所有答案和评论都缺乏这一点)。

答案 4 :(得分:0)

根据您发布的内容,您的代码很好。您有一张地图,其中包含找到的每个值的计数。

现在,你只需要打印你想要的东西,

for(Integer i : hmap.keySet()){
    Integer cnt = hmap.get(i);
    if(cnt > 1)} //or == 2
        System.out.println(i + " -> " + cnt);
    }
}

你对每一对都有一个不错的小输入(如果还有更多则有计数),只需更新你的输出。