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。
本文介绍了两种解决编程问题的方法,针对存在重复元素的数组。第一种解法是通过排序,利用排序后相邻相同元素的特点来判断是否存在重复;第二种解法使用哈希表,通过记录每个元素出现的次数来确定是否有重复。这两种方法分别展示了排序和哈希在解决查找重复元素问题上的应用。

663

被折叠的 条评论
为什么被折叠?



