c++ - 找到唯一的号码
问题描述
我正在尝试搜索一个数组并打印出其中唯一没有一对的数字,因此在本例中为“4”。
结果一直显示为 2,所以即使我觉得我的逻辑是正确的,我肯定忽略了一些东西。
我一直在尝试解决这个问题并一直卡住
提前谢谢了。
这是代码:
int main(){
int arr[] = {1, 1, 2, 2, 3, 3, 4};
int n = sizeof(arr)/sizeof(*arr);
int foundNum = 0;
int counter = 0;
while(counter !=n) {
int i = 0;
if (arr[i] != arr[i + 1]) {
foundNum = arr[i];
} else {
arr[i] = arr[i+2];
}
counter += 1;
}
std::cout << foundNum;
return 0;
}
解决方案
如果您确定除唯一数字之外的所有剩余数字都成对出现,则使用XOR操作非常容易。
并且 xor a pair 为 0。因此,如果您遍历整个数组,则 xor 的结果为 0。
与 0 的 XOR 会产生相同的数字本身。因此,当所有数字都通过它们自己的副本取消时,唯一的数字 xor 与结果 0 一起保留作为答案。
代码 :
int main(){
int arr[] = {1, 1, 2, 2, 3, 3, 4};
int n = sizeof(arr)/sizeof(*arr), a = 0;
for ( int i = 0; i < n; i++ ) a = a ^ arr[i];
std::cout << "Found the lone number : " << a;
return 0;
}
推荐阅读
- android - 没有主构造函数,类扩展 AppCompatImageView 超类型初始化是不可能的
- javascript - 重定向到本地路由或在没有获取请求的情况下呈现 ejs 文件
- artifactory - JForg Artifactory 7.12.6 重启后无法启动访问服务器
- sql - 查询仅获取第一次出现的平均值
- dynamics-crm - 自定义解决方案导入失败
- algorithm - 从父子结构算法创建完整的层次结构字符串,递归
- python - 在 google colab 中设置 API 密钥
- object - 什么是 NCHW 格式?
- javascript - Django render_to_string 不呈现 javascript
- paypal - 有没有办法验证电子邮件地址是否是有效的 PayPal 电子邮件?