c语言中一个一维数组怎样去重?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中一个一维数组怎样去重?相关的知识,希望对你有一定的参考价值。
我定义一个一维数组~~其中有重复的元素?请问应该怎样去重?
可以定义两个数组,将原来数组的不重复的数放到新数组中就可以了.(如果需要也可以释放原来数组的内存)#include <stdio.h> main() int a[5]=1,1,2,1,2; int i,j,k=0, b[5]=0; for(i=0;i<=4;i++) for(j=0;j<=4;j++) if(a[i]!=b[j]) b[k]=a[i];k++; printf("去重后的数组为:"); for(i=0;i<=k-1;i++) printf("a[i]=%d",a[i]); 参考技术A /*只是个例子 有改进的空间 buf可能不需要 *//*空间换时间的办法可以用 位图bitmap来做 效率更高*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int a[]=0,1,0,2,3,1,5,7,2;
int func(int* array,int len)
int i=0,j=0;
int repeat=0;
int* buf=(int*)malloc(len*sizeof(int));
int* flag=(int*)malloc(len*sizeof(int));
memset(buf,0,len*sizeof(int));
memset(flag,0,len*sizeof(int));
for(i=0;i<len;i++)
repeat=0;
for(j=i+1;j<len;j++)
if(array[i]==array[j])
flag[j]=++repeat;
j=0;
for(i=0;i<len;i++)
if(flag[i]==0)
buf[j++]=array[i];
memcpy(a,buf,len*sizeof(int));
free(buf);
free(flag);
return j;
int main()
int newlen,i;
newlen=func(a,sizeof(a)/sizeof(int));
printf("new len %d \\r\\n",newlen);
for(i=0;i<newlen;i++)
printf("%d ",a[i]);
printf("\\r\\n");
参考技术B #include <stdio.h> #include <malloc.h> using namespace std ; bool isRepeat(int *arr,int len,int elem) for(int i = 0 ; i < len ; i++) if(arr[i]==elem) return true ; return false ; int* delRepeat(int *arr,int len) int *tar = (int*)malloc(sizeof(int)) ; int temp ; unsigned char i ; unsigned char j = 0 ; tar[j] = arr[0] ; for(i=1;i<len;i++) if(!isRepeat(tar,j+1,arr[i])) tar = (int*)realloc(tar,sizeof(int)*(j+2)) ; tar[++j] = arr[i] ; return tar ; int main() int a[5] = 1,2,2,3,3 ; int *b = delRepeat(a,5) ; return 0 ; 本回答被提问者采纳
reduce实现计算数组中每个元素出现的次数 数组去重 将多维数组转化为一维
// js计算数组中每个元素出现的次数
// var names = [‘Alice‘, ‘Bob‘, ‘Tiff‘, ‘Bruce‘, ‘Alice‘];
// var countedNames = names.reduce(function (allNames, name)
// if (name in allNames)
// allNames[name]++;
//
// else
// allNames[name] = 1;
//
// return allNames;
// , );
// console.log(countedNames) //Alice: 2, Bob: 1, Tiff: 1, Bruce: 1
// 数组去重
// let arr = [1,2,3,4,4,1]
// let newArr = arr.reduce((pre,cur)=>
// if(!pre.includes(cur))
// return pre.concat(cur)
// else
// return pre
//
// ,[])
// console.log(newArr);// [1, 2, 3, 4]
//将多维数组转化为一维
let arr = [[0, 1], [2, 3], [4,[5,6,7]]]
const newArr = function(arr)
return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur),[])
console.log(newArr(arr)); //[0, 1, 2, 3, 4, 5, 6, 7]
以上是关于c语言中一个一维数组怎样去重?的主要内容,如果未能解决你的问题,请参考以下文章