力扣初级算法——存在重复元素(C语言哈希表)

给定一个整数数组,判断是否存在重复元素。

如果存在一值在数组中出现至少两次,函数返回 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语言应该也都可以但是耗时是真的多 


 

你可能感兴趣的:(力扣刷题,leetcode,算法,c语言,哈希算法)