美文网首页
217. Contains Duplicate (E)

217. Contains Duplicate (E)

作者: Ysgc | 来源:发表于2020-11-17 22:26 被阅读0次

Given an array of integers, find if the array contains any duplicates.

Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.

Example 1:

Input: [1,2,3,1]
Output: true
Example 2:

Input: [1,2,3,4]
Output: false
Example 3:

Input: [1,1,1,3,3,4,3,2,4,2]
Output: true


我的答案:

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        unordered_set<int> nums_set(nums.begin(), nums.end());
        return nums_set.size() < nums.size();
    }
};

Runtime: 60 ms, faster than 71.39% of C++ online submissions for Contains Duplicate.
Memory Usage: 20.6 MB, less than 44.96% of C++ online submissions for Contains Duplicate.

此处用set会慢一点


评论区有一种解法快很多:
C++ solution faster than 99.72%

bool containsDuplicate(vector<int>& nums) {
        int n=nums.size();
        if(n<2) return false;
        int mini=*min_element(nums.begin(),nums.end());
        int maxi=*max_element(nums.begin(),nums.end());
        int f[maxi-mini+1];
        memset(f,0,sizeof(f));
        for(int i=0;i<n;i++)
        {
            f[nums[i]-mini]++;
            if(f[nums[i]-mini]>1)
                return true;
        }
        return false;
    }

相关文章

网友评论

      本文标题:217. Contains Duplicate (E)

      本文链接:https://www.haomeiwen.com/subject/ncsabktx.html