另外一种方法
/**
数组中只出现一次的数字。
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。比如{1,2,1,3,4,3,4,5,6,6,7,5},输出为2和7
请写程序找出这两个只出现一次的数字。要求时间复杂度是 O(n),空间复杂度为 O(1);
思路:用集合框架来做,先定义个LinkedHashMap
每次依次存储整型数组中的元素之前,先判断下集合中是否有这个元素(containsKey)
若集合中有这个元素,则将这个元素(键)对应的 出现次数加1(值)
若没有出现这个元素,则将这个元素(键)对应的 出现次数设为1(值)
然后取出键keySet对应值为1的键
借鉴前面程序替代方法。
day7_08
* */
import java.util.*;
public class ArrayDigitalOccurOneTimes_2 {
public static void main(String[] args){
int[] a={1,2,1,3,4,3,4,5,6,6,7,5};
find(a);
}
public static void find(int[] arr){
LinkedHashMap<Integer,Integer> hash = new LinkedHashMap<Integer,Integer>();
for(int i=0;i<arr.length;i++){
if(hash.containsKey(arr[i])){
hash.put(arr[i], hash.get(arr[i])+1);
}
else
hash.put(arr[i], 1);
}
Set set=hash.keySet();
Iterator<Integer> it =set.iterator();
while(it.hasNext()){
Integer a = it.next();
if(hash.get(a)==1)
System.out.println(a);
}
/*
for(Integer b : hash.keySet ){
if(hash.get(b)==1)
System.out.println(b);
}
*/
}
}