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);
    }
}