40、数组中只出现一次的数字
程序员文章站
2022-07-15 10:40:05
...
(个人水平有限,请见谅!)
题目描述:
一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。
代码示例:
class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
if (data.size() < 2) return;
int temp = data[0];
for (int i = 1; i < data.size(); i++)
temp ^= data[i];
if (temp == 0) return;
// 找到1所在的最低位
int index = 0;
while ((temp&1) == 0)
{
temp = temp >> 1;
index++;
}
*num1 = *num2 = 0;
for(int i = 0; i < data.size(); i++)
{
if (IsBit(data[i],index))
*num1 ^= data[i];
else
*num2 ^= data[i];
}
}
// 划分为两类
int IsBit(int num, int index)
{
num = num >> index;
return (num&1);
}
};
上一篇: 枚举
下一篇: C语言基于栈实现二进制转十进制
推荐阅读
-
PHP查找数组中只出现一次的数字实现方法【查找特定元素】
-
在字符串中找出第一个只出现一次的字符。经典C语言例题
-
leadcode的Hot100系列--136. 只出现一次的数字
-
python(leetcode)-136只出现一次的数字
-
LeetCode 面试题56 - I. 数组中数字出现的次数
-
在一个非降序排列的数组中,找出数字target出现的次数问题解答
-
剑指offer 56 数组中数字出现的次数 lintcode 82. 落单的数、83. 落单的数 II、84. 落单的数 III
-
位运算 -- 只出现一次的的数字
-
【知识迁移能力】数组中只出现一次的数字
-
【不熟练】知识迁移能力-数组中只出现一次的数字