题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
AC代码
//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
int xor=0;
for(int i:array){
xor^=i;
}
int index=getFirst(xor);
for(int i:array){
if(match(i,index)){
num1[0]^=i;
}else{
num2[0]^=i;
}
}
}
int getFirst(int n){
for(int i=0;i<32;i++){
if((n&1)==0){
n>>=1;
}else{
return i;
}
}
return 0;
}
boolean match(int n,int index){
n>>=index;
return (n&1)==1;
}
}
版权声明:本文为weixin_40992982原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。