题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
思路:定义两个索引i,j;i指向当前遍历的数字,j指向i次的搜索。若array[i] == array[j];就将j之后的数字向前移动。此时i遍历的最大值减 1。如果j遍历末尾仍然没有相同的,则将此数字保存。切记第二层循环的结束条件和外层循环一致。
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
int num[] = new int[2];
int n = 0;
int sum = 0;
for(int i=0;i<array.length-sum;i++){
boolean flag = true;
for(int j=i+1;j<array.length-sum;j++){
if(array[i]==array[j]){
flag = false;
sum++;
for(;j<array.length-1;j++){
array[j] = array[j+1];
}
break;
}
}
if(flag){
num[n++] = array[i];
}
if(n==2)
break;
}
num1[0] = num[0];
num2[0] = num[1];
}
}