题目描述:
一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
数据范围:数组长度2≤n ≤1000,数组中每个数的大小0 <val < 1000000要求:空间复杂度O(1),时间复杂度O(n)
提示:输出时按非降序排列。
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
public class Main {
public static void main(String[] args) {
int[] numbers = {2,5,7,9,3,2,5,3};
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
//遍历数组
for(int n : numbers) {
if(map.containsKey(n)) {
//该数字已经存在,出现次数+1
map.put(n, map.get(n) + 1);
}else {
//该数字不存在,出现次数=1
map.put(n, 1);
}
}
Set<Entry<Integer, Integer>> entrySet = map.entrySet();
for(Entry<Integer, Integer> recoder : entrySet) {
if(recoder.getValue() == 1) {
System.out.println(recoder.getKey());
}
}
}
}