217. Contains Duplicate (E)

2020-11-17  本文已影响0人  Ysgc

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;
    }
上一篇 下一篇

猜你喜欢

热点阅读