40.数组中只出现一次的数字

原创 2015年07月10日 20:03:33



void FindNumsAppearOnce(int data[], int length, int* num1, int* num2)
{
if (data == NULL || length < 2)
return;
int resultExclusiveOR = 0;
for (int i = 0; i < length; ++i)
resultExclusiveOR ^= data[i];
unsigned int indexOf1 = FindFirstBitIs1(resultExclusiveOR);
*num1 = *num2 = 0;
for (int j = 0; j < length; ++j)
{
if (IsBit1(data[j], indexOf1))
*num1 ^= data[j];//异或
else
*num2 ^= data[j];
}
}
unsigned int FindFirstBitIs1(int num)
{
int indexBit = 0;
while (((num & 1) == 0) && (indexBit < 8 * sizeof(int)))
{
num = num >> 1;
++indexBit;
}
return indexBit;
}
bool IsBit1(int num, unsigned int indexBit)
{
num = num >> indexBit;
return (num & 1);
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

剑指offer面试题40-数组中只出现一次的数字

题目: 一个整形数组里除了两个数字意外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 要求时间复杂度是On,空间复杂度为O1 这个是上一篇 2016阿里巴巴java笔试题 的...

40、数组中只出现一次的数字

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

剑指offer 40. 数组中只出现一次的数字

// 题目:输入一个递数组,所有数字都出现了两次出了两个数字之外,输出只出现一次的两个数字 //解法1:类似桶排序,时间O(n),空间O(n) public class Main { publi...

剑指offer:(40)知识迁移 :数组中只出现一次的数字

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 思路:    可以用位运算实现,如果将所有所有数字相异或,则最后的结果肯定是那两个只出现一次的数字异或...

面试题40 数组中只出现一次的数字

题目一:一个数组里除了一个数之外,其他的数都出现了两次,请找出这个数。 思想:题目里强调, 一个数字出现了一次,其余的都出现了两次。我们想到异或的一个性质:任何一个数字异或自身等于0.也就是...

剑指Offer面试题40:数组中只出现一次的数字 Java实现

题目:数组中只出现一次的数字           一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(l).例如,输...

面试题40: 数组中只出现一次的数字

一. 题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1).代码请到我的代码库中下载 Point2Offe...

[剑指Offer]40.数组中只出现一次的数字

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路我们直到异或的性质:任何一个数字异或他自己都等于0. 所以说我们如果从头到尾依次异或每一个数字,那么最终...

【剑指Offer学习】【面试题40:数组中只出现一次的数字】

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次,请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。我们想到异或运算的一个性质:任何一个数字异或它自己都等...

剑指Offer——(40)数组中只出现一次的数字

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)