题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。
请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
分析:这是一道很新颖的关于位运算的面试题。
先求异或得出一个结果是这两个数字的异或,必不为0。其二进制至少有一位为1,以这位为准把原数组分为两部分,一部分该位为1数,一部分该位为0数。这两个数必分别在这两个小数组里,且每个小数组除此数之外其他数出现两次,再用异或就可以分别求得。
寻找唯一数字
本文介绍了一种利用位运算解决数组中寻找唯一出现一次的两个数字的问题。通过先计算所有数字的异或结果,再根据结果中某一位为1的特性将数组分成两组,最后分别计算每组的异或结果来高效解决问题。
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。
请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
分析:这是一道很新颖的关于位运算的面试题。
先求异或得出一个结果是这两个数字的异或,必不为0。其二进制至少有一位为1,以这位为准把原数组分为两部分,一部分该位为1数,一部分该位为0数。这两个数必分别在这两个小数组里,且每个小数组除此数之外其他数出现两次,再用异或就可以分别求得。

被折叠的 条评论
为什么被折叠?