Every day a leetcode
题目来源:217. 存在重复元素
解法1:排序
先将数组排序,相同的值一定相邻,遍历一次数组,比较相邻的元素:
- 若相邻的元素相等在,则返回true
- 否则,返回false。
代码:
int cmpfunc (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
bool containsDuplicate(int* nums, int numsSize){
qsort(nums,numsSize,sizeof(int),cmpfunc);
for(int i=1;i<numsSize;i++)
{
if(nums[i] == nums[i-1])
{
return true;
}
}
return false;
}
结果:
解法2:hash
用hash表记录数组中的每一个元素,当hash[nums[i]]>1时,返回true。
若hash表中不存在大于1的数,返回false。