发布网友 发布时间:2022-04-23 03:21
共3个回答
热心网友 时间:2023-08-10 05:47
如果数都分布的很集中的话,比如 1- 1000 可以尝试用
一个 boolean数组 大小为 1000
然后遍历原来的数组,用原来的数做下标,出现的使其为真,最后读BOOL数组为真的索引恢复一个新数组,就是无重复的。这个方法比较简单。
还有就是建立一颗 平衡树, 方法网上可以搜到,类似 STL 中 SET 的实现。效率相当高,你把数据都插进去,就可以自动剔除重复的数。
我也不是很会。
热心网友 时间:2023-08-10 05:47
/********注释****src[]原数组****num为数组个数***返回非重复个数****/
#include<stdio.h>
int func(int src[],int num)
{
int i,j,count = 0,flag = 0;
for(i = 0;i < num;i++){
if(!src[i]) flag = 1; /*若有零,置flag 为 1 */
}
for(i = 0;i < num - 1;i++){
for(j = i + 1;j < num;j++){
if(src[i] == src[j])
src[j] = 0; /*重复值全部置 0 */
}
}
if(flag){
printf("%10d",0);
count = 1;
}
/****在此可设置一个数组进行接收*****/
for(i = 0;i < num;i++){
if(src[i]){
printf("%10d",src[i]);
count++; /*非重复的个数*/
}
}
return count;
}
热心网友 时间:2023-08-10 05:48
弄两个数组 第n个相同b{n}=a{n+1}