万一数字是两位数(10)该怎么办?应该特殊判断一下吧。
不知道你这个问题是否已经解决, 如果还没有解决的话:1、先将所有数字异或,结果为两个不一样数字异或的结果,存在 ret 里;
2、从右往左找出 ret 二进制数第一位为 1 的位置,存在 pos 里,pos位为1分一组,为0分一组;
3、通过 if (1 == ((a[i] >> pos) & 1)) 把两个不同的数分开;
4、两组分别进行异或,一组结果存在 first 里,另一组结果存在 second 里。
应该有四个操作啊,你只判断了两个吧