一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
解题思路:先找出重复的数字,并将它们所在的位置做一个标记,如newArray数组就是标记数组;然后遍历标记数组,标记数组没做标记的位置,就是要查找的位置记做为k,找到后将原数组索引为k的元素,赋值给用于存放只出现一次的数字的数组num。
//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
publicclass Solution {
public void FindNumsAppearOnce(int []array,int num1[] , int num2[]) {
int n=array.length;
int []newArray=new int[n];
int[]num=new int[2];
int l=0;
if(n>1){
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
int a=array[i]^array[j];
if(a==0){
newArray[i]=1;//做标记
newArray[j]=1;//做标记
break;
}
}
}
}
for(int k=0;k<newArray.length;k++){
if(newArray[k]==0){
num[l]=array[k];
l++;
if(l==2){
break;
}
}
}
num1[0]=num[0];
num2[0]=num[1];
}
}