这个题目我是一点头绪都没有,可能是因为没有接触过这种,想着用栈好像也不对,用桶太可怕了,内存肯定爆掉了,而且不允许使用额外内存。
然后看到网上的思路是用异或^ ,按位异或,相同为0 ,不同为1,因为两个相同的数字异或为0 ,初始值设置为0 ,因为0与其他数字异或为这个数字。最后由于都有相同的数字,异或的最后结果肯定会得到单下的数字。
public class Solution {
public int singleNumber(int[] A) {
int result = 0;
int length = A.length;
for(int i=0;i<length;i++){
result = result^A[i];
}
return result;
}
}