有一个包含多个数字的数组。其中在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);
}
答案 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);
}
}
你对每一对都有一个不错的小输入(如果还有更多则有计数),只需更新你的输出。