题目: 存在重复元素
代码(C语言)
思路:先排序,后判断有没有重复的元素
int comp(const void *a,const void *b){ //变量被const修饰,那么它的值就不能再被改变
return (*(int*)a > *(int*)b );
}
//这里是给出了comp函数,用于比较两个元素,为后面的排序做准备
bool containsDuplicate(int* nums, int numsSize){
qsort(nums,numsSize,sizeof(int),comp); //qsort: C语言函数库自带的排序函数(升序)
int count = 1;
for (int i=1; i<numsSize;i++){
if (nums[i]>nums[i-1]){ //按升序排后,只有两种情况:后者大于或等于前者
if(count >=2){
return true;
} //任意值出现了重复,直接返回True
count = 1;
}
else{
count++;
} //相等则说明有重复的,计数器+1
}
if (count >=2){
return true;
}
return false; //此步的判断不可省略,会报错
}