一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
由于其他数字都出现两次,所以这里可以直接从最开始进行一个判断,判断当前位置和下一个位置的数值是否相等,如果相等则证明这一对可以不再看,i=i+2。如果说当前数值不等于下一个数值,则此时证明当前值只有一个,所以写入数组中,这种写法只有到了数组最后的时候i无法取到最后的一个数,所以最后进行i是否为最后一个数进行判断,如果相等则证明取到了最后,第二个数值为最后一个,此时就得出了两个数。
//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
import java.util.*;
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
if(array.length<2){
return;
}
Arrays.sort(array);
int i=0,j = 0;
int[] num = new int[2];
while(i<array.length-1){
if(array[i] == array[i+1]){
i = i+2;
}else{
num[j++] = array[i];
i++;
}
}
if(i == array.length-1){
num[1] = array[i];
}
num1[0] = num[0];
num2[0] = num[1];
}
}
京公网安备 11010502036488号