假设数组a有N个元素,元素的取值为1~N,如何判断数组是否存在重复元素
方法一:对数组进行排序,然后比较相邻的元素是否相同。时间复杂度为O(nlogn),空间复杂度为O(1);
代码
int comp(const void *a,const void *b){
return (*(int *)a -*(int *)b);
}
int isArrayRepeat(int* a,int n){
int i = 0;
if(!a||n<1)
return -1;
qsort(a,n,sizeof(int),comp);//快速排序
for(i = 0;i<n-1;i++)
{
if(a[i] == a[i+1])
{
return 1;
}
}
return 0;
}