题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
思路:
因为数字只存在一次或者两次,所以可以定义一个ArrayList用于添加数组中的元素,若元素已经在ArrayList存在,则在ArrayList删除该元素,表示这个元素是出现两次的元素,遍历完成数组,最后在ArrayList中剩下的元素则为出现一次的数字。
若有有的元素出现奇数次,可以使用HashMap来进行存储,最后遍历这个HashMap就可以了。
代码:
import java.util.ArrayList;
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
if(array.length <= 0){
return ;
}
ArrayList<Integer> arrayList = new ArrayList<Integer>();
int index;
num1[0] = 0;
num2[0] = 0;
for(int i=0;i<array.length;i++){
if((index = arrayList.indexOf(array[i]))== -1){
arrayList.add(array[i]);
}else {
arrayList.remove(index);
}
}
num1[0] = arrayList.get(0);
num2[0] = arrayList.get(1);
}
}