题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
if(null==array||array.length<2) return;
int or=0;
for(int i=0;i<array.length;i++)
or=or^array[i];
int index=findFirstOne(or);
for(int i=0;i<array.length;i++){
if(isOne(array[i],index)){
num1[0]^=array[i];
}
else{
num2[0]^=array[i];
}
}
}
int findFirstOne(int num){
int index=0;
while(((num&1)==0)&&index<32){
num=num>>1;
index++;
}
return index;
}
//判断元素某位上是否为 1
boolean isOne(int num,int index){
num=num>>index;
return (num&1)==1;
}
}
本文提供了一个解决方案,用于在一个整型数组中找到仅出现一次的两个数字。通过使用位操作,特别是异或运算,来高效地实现这一目标。文章中的代码示例展示了如何通过两轮异或操作来分离出这两个唯一的数字。
1578

被折叠的 条评论
为什么被折叠?



