package leetcode;
public class offer_56_1 {
public int[] singleNumbers(int[] nums) {
int temp=0;
//找出两个不同数的异或值
for(int num:nums) {
temp=temp^num;
}
//temp二进制串中最右边的1,根据这个1 进行分组
int flag=temp&(-temp);
int[] arr=new int[2];
//如果当前值与1异或后不等于0,说明有一个值在当前组,找出这个值
for(int num:nums) {
if((flag&num)!=0) {
arr[0]=arr[0]^num;
}
}
//根据自反性找出另一个值
arr[1]=arr[0]^temp;
System.out.println(arr[1]);
return arr;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
offer_56_1 off=new offer_56_1();
int[] nums= {1,2,10,4,1,4,3,3};
off.singleNumbers(nums);
}
}