/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @param numsLen int nums数组长度
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */
 #define N 2
int* FindNumsAppearOnce(int* nums, int numsLen, int* returnSize ) {
    // write code here
    int tmp=0;
    int i;

    //异或出两个不同的数字的结果
    for(i=0;i<numsLen;i++){
        tmp^=nums[i];
    }

    //按位取得上述结果为1的位置
    int pos=-1;
    for(i=0;i<32;i++){
        if((tmp&1)==1){
            pos=i;
            break;
        }
        tmp=tmp>>1;
    }

    //得到最终的两个结果
    int num1=0,num2=0;
    for(i=0;i<numsLen;i++){
        if(((nums[i]>>pos) & 1) == 1)
            num1^=nums[i];
        else
         num2^=nums[i];
    }

    *returnSize=2;
    (num1<num2)?(nums[0]=num1,nums[1]=num2):
    (nums[0]=num2,nums[1]=num1);
    return nums;

}