#找出数组中重复的元素
-
异或法
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int N=11;//11个数里面找出重复的值
int a[N];
//先给前10个值赋值1-10
for(int i=0;i<N-1;i++){
a[i]=i+1;
}
//给第11个值赋值
int j;
srand(time(0));
a[10] =rand()%10+1;
int x1=0;//0异或其他数等于其他数本身
// 整个数列异或
for(int i=0;i<N;i++){
x1 =(x1^a[i]);
}
//异或 1-10
for(int i=0;i<N-1;i++){
x1 = x1^a[i];
}
//输出数列
for(int i=0;i<11;i++){
printf("%d",a[i]);
printf(" ");}
printf(“重复的数为%d”,x1);
return 0;
}
2. 利用其他数组
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int b[11]; // 清零数组 memset(a,0,sezeof(a));
int main(){
int N=11;//11个数里面找出重复的值
int a[N];
//先给前10个值赋值1-10
for(int i=0;i<10;i++){
a[i]=i+1;
}
//给第11个值赋值
srand(time(0));
a[10] =rand()%10+1;
//输出数列
for(int i=0;i<N;i++){
printf("%d",a[i]);
printf(" ");}
//
for(int i=0;i<N;i++){
b[a[i]]++;
}
for(int i=0;i<N;i++){
if(b[i]==2)
{printf("重复的数为%d",i);
}
}
return 0;
}
这篇博客介绍了两种找出数组中重复元素的方法。第一种利用异或操作,通过整个数列的异或结果与部分数列的异或结果相异或,得到重复的数值。第二种方法是借助另一个数组,遍历原数组并将出现过的元素记录在辅助数组中,找出重复的元素。示例代码分别展示了这两种实现方式。
1259

被折叠的 条评论
为什么被折叠?



