概述
使用位操作取出一组数据中唯一出现一次的两个元素
编程思路:
1、定义要找出的这组元素;
2、第一次遍历这组数据,找出唯一出现的元素的&的值;
3、定义pos变量,取出第二步找出的这个数的自左向右数第一个不为0的二进制数位;
4、将第一步定义的这组元素按pos位是否为1分为两部分,此时这两个唯一出现一次的元素被分到两组数据中;
5、再采用找出一组数据中唯一出现一次的一个元素的方法分别找出这两个元素;https://mp.csdn.net/postedit/89406967
6、打印结果。
具体代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a[10] = { 1, 5, 2, 3, 4, 1, 6, 3, 4, 2 };
int i;
int num1 = 0, num2 = 0, sum = 0;
int pos;
for (i = 0; i < 10; i++) {
sum ^= a[i];
}
for (i = 0; i < 32; i++) {
if (sum & 1 << i) {
pos = i;
break;
}
}
for (i = 0; i < 10; i++) {
if (a[i] & 1 << pos) {
num1 ^= a[i];
}
else {
num2 ^= a[i];
}
}
printf("%d %d", num1, num2);
system("pause");
return 0;
}
最后
以上就是幽默手套为你收集整理的使用位操作取出一组数据中唯一出现一次的两个元素的全部内容,希望文章能够帮你解决使用位操作取出一组数据中唯一出现一次的两个元素所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复