/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @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; }