题目
leecode
给一个整数数组,判断是否存在重复的元素,返回true或false
我的解法
int sort(const void* a, const void* b){
if(*(int*)a < *(int*)b){
return -1;
}
else{
return 1;
}
}
bool containsDuplicate(int* nums, int numsSize){
qsort(nums, numsSize, sizeof(nums[0]), sort);
for(int i = 0; i < numsSize - 1; i++){
if(nums[i] == nums[i + 1]){
return true;
}
}
return false;
}
思考
这里的难点就是qsort函数
qsort是定义在stdlib库里,有4个参数
- 需要排序的数组
- 需要排序的个数
- 每一个数字或字符的字节大小sizeof(nums[0])
- 如何排序的函数
qsort是用二分法写的,时间复杂度为n*logn.可参考qsort详解