剑指offer值数组中只出现一次的两个数字
程序员文章站
2022-03-08 16:23:46
...
HashMap进行保存和计数;HashSet对只出现一次的数字进行存储(Set集合的不可重复性)。采用iterator进行遍历Set集合并输出。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] FindNumsAppearOnce (int[] array) {
// write code here
HashMap <Integer,Integer> map = new HashMap < >();
for(int i= 0;i< array.length;i++){
int key= array[i];
Integer nun = map.get(key);
if(nun == null){
map.put(key,0);
}else{
nun++;
map.put(key,nun);
}
}
//Set<Integer> result= new Set< >;
// for(int j=0;j<2;j++){
HashSet<Integer> set= new HashSet<> ();
Set< Integer> keyset= map.keySet();
for(int key:keyset){
int nun= map.get(key);
if(nun == 0)
//result[j]= key;
set.add(key);
}
int [] result= new int[2];
Iterator it= set.iterator();
int j = 0;
while(it.hasNext()){
result[j] = (int)it.next();
j++;
}
return result;
}
}