LeetCode217.存在重复元素
题目
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
示例 1:
输入: [1,2,3,1]
输出: true
示例 2:
输入: [1,2,3,4]
输出: false
示例 3:
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
方法分析
直接比较所有元素可能导致运行超时,这里优化一下算法,先排序,再比较。
代码展示
bool containsDuplicate(int* nums,int numsSize)
{
if(numsSize<2)
{
return false;
}
int i=0;
int j=0;
int cmp(const void*a,const void*b)
{
return *(int*)a-*(int*)b;
}
qsort(nums;numsSize,sizeof(int),cmp);
for(i=0,i<numsSize-1;i++)
{
if(nums[i]==nums[i++])
{
return true;
}
}
return false;
}
以上代码运行,结果出现了错误。 再看代码,原来是比较代码的if条件写错了,应该改成:
if(nums[i]==nums[i+1])
总结
审题,确定解题算法(比较是否重复),能否优化算法,执行代码。
|