给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 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
来源:力扣(LeetCode)
bool containsDuplicate(int* nums, int numsSize){
int hash[10000000];
int hash1[10000000];
for(int i=0;i<10000000;i++)
{
hash[i]=0;
hash1[i]=0;
}
for(int i=0;i=0){
if(hash[nums[i]]==1)
{
return true;
}
else{
hash[nums[i]]=1;
}
}
else{
int t=-nums[i];
if(hash1[t]==1)
{
return true;
}
else{
hash1[t]=1;
}
}}
return false;
}
利用哈希表,暴力求解很容易超时,尤其是后面用例规模特别大,将正数用一个hash表负数用一个hash表很容易解决这个问题,但是程序的耗时还是很多,我见他们都用java自带的排序跟set进行解题,C语言应该也都可以但是耗时是真的多