两个数相同,异或的结果必然为零,那么把整个数组异或一遍,得出来的结果就是剩下两个单独出现的数字的异或的结果,他们从右到左第一个出现的1证明这是他们第一个不相同的点10010的右边第二个1是不同点,我们可以借此把数组分成两组,用&(1<<2)来分成两组去异或,做后得出的就是两个不同的数
既然题目说了一定有个数是1的值,那就先快排一下,然后很容易得到这个数组只有3种情况:
情况1: 数组是ABBBCCC...的类型,第一个A就是我们要的
情况2:数组是BBBACCC...的类型,中间的A就是我们要的
情况3:数组是BBB...CCCA的类型,最后的A就是我们要的