在数组中快速找到只出现一次的数
来源:互联网 发布:淘宝高仿运动鞋店推荐 编辑:程序博客网 时间:2024/06/05 04:52
在一个已知数组中,只有一位数只出现一次,其余数均出现两次,如何快速找到这个数。
常规方法,通过一一比较,找出只出现一次的数,代码如下
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0, j = 0;
int arr[10] = {0,1,2,3,0,2,3,1,10};
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
if (i != j)
{
if ((arr[i] ^ arr[j]) == 0)
{
break;
}
}
}
if (arr[i] != arr[j])
{
printf("%d\n", arr[i]);
}
}
system("pause");
return 0;
}
可以看出来,此代码执行效率低,且代码量大。
通过异或操作符可以大幅度简化这个问题,a^b^a=b,0^a=a;通过这两个式子可以看出来异或操作符的便利之处,实现代码如下
#include<stdio.h>
#include<stdlib.h>
int main()
{
int arr[] = { 1, 1, 2, 2, 3, 4, 4, 5, 5 };
int size = sizeof(arr) / sizeof(arr[0]);
int n = 0;
for (int i = 0; i < size; i++)
{
n=n^arr[i];
}
printf("%d", n);
system("pause");
return 0;
}
可以发现通过异或位操作大大简化了代码且代码执行效率得到了提高。
本文出自 “qin-wang” 博客,转载请与作者联系!
- 在数组中快速找到只出现一次的数
- 在其他数都出现k次的数组中找到只出现一次的数
- 在其他数都出现K次的数组中找到只出现一次的数
- 位运算---在其他数都出现k次的数组中找到只出现一次的数
- 在给定数组中找出只出现一次的数
- 数组中只出现一次的数
- 数组中只出现一次的数
- 数组中只出现一次的数
- 数组中只出现一次的数
- 数组中只出现一次的数
- 数组中只出现一次的数
- 数组中只出现一次的数
- 数组中只出现一次的数
- 数组中只出现一次的数
- 数组中只出现一次的数
- 数组中只出现一次的数
- 数组中只出现一次的数
- 位操作-找到数组中只出现一次的数字
- 突然发现getchar()和putchar()自己之前都没认真想过,今天特把自己感悟写一下
- 写一个三子棋小游戏的感悟
- android:windowIsTranslucent="true"透明style与横竖屏切换的冲突
- 字符串的旋转问题
- storm流程——storm
- 在数组中快速找到只出现一次的数
- 模拟实现string类
- c++中的动态内存管理
- 一个数组实现两个栈
- C++ map的基本使用方法
- 关于给定栈求出所有合法栈的思考
- Linux下的 文件的三个时间参数
- Linux的下的文件查找命令find
- Linux配置vim ctags g++ IDE GDB