题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @param numsLen int nums数组长度 * @return int整型一维数组 * @return int* returnSize 返回数组行数 */ int* FindNumsAppearOnce(int* nums, int numsLen, int* returnSize ) { // write code here int ret = 0, i = 0, n = numsLen; for (i = 0; i < n; i++) { ret ^= nums[i]; } int pos = 0; while (((ret>>pos)&1) != 1) { pos++; } int a=0, b=0; for (i = 0; i < n; i++) { if (((nums[i] >> pos)&1) == 0) { a ^= nums[i]; } else { b ^= nums[i]; } } if (a > b) { nums[0] = b; nums[1] = a; } else { nums[0] = a; nums[1] = b; } *returnSize = 2; return nums; }