解题思路:使用映射hashmap,将传入的数组元素作为key,
第一次遍历时,每次遍历到新出现的元素时,put(元素,1)//key:元素,value:1,每次遍历到相同的元素时,修改value为value++,
第二次遍历:寻找value为1的key,输出即可
import java.util.HashMap;
import java.util.Map;
/**
* @author shy_black
* @date 2019/4/24 20:13
* @Description:
*
* 题目描述
* 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
*
* //num1,num2分别为长度为1的数组。传出参数
* //将num1[0],num2[0]设置为返回结果
*/
public class 数组中只出现一次的数字 {
public static void main(String[] args) {
int[] array = new int[]{2,2,2,2,3,3,3,4,5};
int[] num1 = new int[1];
int[] num2 = new int[1];
数组中只出现一次的数字(array,num1,num2);
}
public static void 数组中只出现一次的数字(int [] array,int num1[] , int num2[]) {
Map<Integer,Integer> map = new HashMap<>();
for(Integer a : array) {
Integer count = map.get(a);
if(null == count){
map.put(a,1);
}else {
map.put(a,count+1);
}
}
int[] num = new int[2];
int i = 0;
for(int a : array) {
Integer count = map.get(a);
if(count == 1)
num[i++] = a;
}
num1[0] = num[0];
num2[0] = num[1];
System.out.println(num1[0]);
System.out.println(num2[0]);
}
}