c语言 一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。
程序员文章站
2024-02-02 15:04:10
...
#include<stdio.h>
#include<stdlib.h>
#define SIZE(a) (sizeof(a)/sizeof(a[0]))
int main() {
char a[] = {2,5,8,9,6,5,8,6,9,4,3,4 };
int i, sum = 0;
int pos;
int num1=0,num2=0;
//对只出现了一次的2个数^
for (i = 0; i < SIZE(a); ++i) {
sum ^= a[i];
}
//对^后的数二进制位的第一个1进行标记
for (i = 0; i < 32; ++i) {
if (sum & 1 << i) {
pos = i;
break;
}
}
for (i = 0; i < SIZE(a); ++i) {
//对这组数进行分组,pos位是否为1为标准
if (a[i] & 1 << pos) {
//相同2个数^为0
num1 ^= a[i];
}
else {
num2 ^= a[i];
}
}
printf("%d %d\n", num1, num2);
system("pause");
return 0;
}
上一篇: 判断正数、负数、零
下一篇: oj1045: 数值统计
推荐阅读
-
一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。
-
c语言 一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。
-
C语言:一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。
-
一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。
-
一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。
-
C语言编程实现之一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字
-
C语言编程实现之一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字
-
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次, 找出这两个只出现一次的数字。
-
一个数组中只有两个数字是出现一次的,其他的数字都出现了两次,找出这两个数字,编写程序。
-
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字