面试题:数组中只出现一次的数字题目:一个整数数组

12 查阅
面试题:数组中只出现一次的数字题目:一个整数数组里除了两个数字之外,其它的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂是O(n),空间复杂度是O(1)。

参考答案:

正确答案:

例如输入数组{2,4,3,6,3,2,5,5},因为只有4、6这两个数字只出现一次,其他数字都出现了两次,所以输出4和6。
这是一个比较难的题目,很少有人能在面试的时候不需要提示一下子想到最好的解决办法。一般当应聘者想了几分钟后还没有思路,面试官会给出一些提示。面试官很有可能会说:你可以先考虑这个数组中只有一个数字只出现一次,其他的都出现了两次,怎么找出这个数字?
这两个题目都在强调一个(或两个)数字只出现一次,其他的出现两次。这有什么意义呢?我们想到异或运算的一个性质

数字