69-Contains Duplicate

  1. Contains Duplicate My Submissions QuestionEditorial Solution
    Total Accepted: 88863 Total Submissions: 214375 Difficulty: Easy
    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.

Subscribe to see which companies asked this question
时间复杂度: O(n)
空间复杂度: O(n)

这里试试set,用map更费空间

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        set<int> s;
        size_t n=nums.size();
        for(size_t i=0;i<n;++i){
            if(s.count(nums[i]))return true;
            else s.insert(nums[i]);
        }
        return false;
    }
};

可以从应用的角度来深入挖掘下,假设有10亿整数, 109230 ,假设一个整数4B,那么10亿个整数大概为4GB内存, 若在内存中运行大约需要8GB内存。

在实际运用中若数据量大到一定程度,等下分析大到什么程度,可以使用位图来做,整数的范围 232 ,用一个位为0或1来表示一个整数是否出现,需要4GB/8=500MB,意味着500MB可以用来判断是否有重复,那什么情况下用位图

什么情况下用集合来判定呢:

假设有n个整数,当 4n<500Mn<1.251081.25亿 宜使用集合,当数量超过1.25亿使用位图

你可能感兴趣的:(DUPLICATE)