一组数字中,有两个数字出现一次,剩下数字出现两次,求这两个数
来源:互联网 发布:windows桌面壁纸 编辑:程序博客网 时间:2024/06/01 09:00
两个数不相同,则说明这两个数字的异或结果肯定不为0
把两个数异或结果从低位到高位第一次不同的位置1,其他位置0,就有一个000...01000...的结果
如果数组中有数字 & 这个数为0,则说明这个数有可能为单独出现的数字中的一个
相反如果不为0,则说明有可能是另一个单独出现的数字
然后把两组分出来的结果分别异或就得到了俩个不同的数字。
#include<stdio.h>#include<windows.h>void FindNumOnce(int src[],int len, int *x, int *y){int i = 0;int flag = 0;for (i = 0; i < len; i++){flag ^= src[i]; //flag的结果就是两个不同数异或的结果}flag &= (flag ^ (flag - 1)); //把两个数异或结果从低位到高位第一次不同的位置1for (i = 0; i < len; i++){if ((src[i] & flag) == 0) //分离出为0的一组{*x ^= src[i];}else //分离出不为0的一组{*y ^= src[i];}}}int main(){int arr[] = { 1, 2, 3, 4, 124563, 1234, 4, 3, 2, 1 };int num1 = 0;int num2 = 0;FindNumOnce(arr,sizeof(arr)/sizeof(arr[0]), &num1, &num2);printf("num = %d,num2 = %d\n", num1, num2);system("pause");return 0;}
0 0
- 一组数字中,有两个数字出现一次,剩下数字出现两次,求这两个数
- 数组中有两个出现一次的数字,其他数字都出现两次,找出这两个数字
- 一组数中,有两个数字各出现了一次,其他数字都是成对出现的,请找出这两个数。
- 一串数字中有两个只出现一次的数字其余都是成对相同,求这两个数
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数
- 一个数组中,除了有两个数字只出现一次外,其他数字都出现两次,求出这两个出现一次的数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字
- 一组数字中只有两个数单独出现,其他数成对出现,找出这两个数
- 有一组数字,有两个数字只出现一次,其他数字都是成对出现的,请找出这个数字。
- 有一组数字,有两个数字只出现一次,其他数字都是成对出现的,请找出这个数字
- 1.求第n个斐波那契数(非递归实现)。 2.一个数组中只有两个数字是出现一次,其他所有数字都出现 了两次。 找出这两个数字,编程实现。
- 一个整型数组中数字出现两次,但是只有2个数字出现一次,求解这两个只出现一次的数的代码
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。
- 关于"安卓端打包图片的格式"问题
- 17.1.1.5 Creating a Data Snapshot Using mysqldump
- LAPACK 求矩阵的逆
- 使用Charles对Https请求进行抓包
- 图像处理--图像噪声
- 一组数字中,有两个数字出现一次,剩下数字出现两次,求这两个数
- Spring MVC注解之@ResponseBody
- 诡异的NoClassDefFoundError错误——也可能是65536引起的
- 1. 建立第一个 Yii 应用
- 做一个努力的人
- 深度学习知识结构图
- 纯福利 | 前端新人面试题汇总-基础篇
- 质数
- RHEL未注册无法使用yum问题解决