Skip to content

Files

Latest commit

fca3338 · Apr 4, 2016

History

History
68 lines (68 loc) · 1.51 KB

Contains Duplicate.md

File metadata and controls

68 lines (68 loc) · 1.51 KB

#Contains Duplicate ##Problem: 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. ##Idea: Hash Table

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        unordered_map<int,int> count;
        for(int i=0;i<nums.size();i++)
        {
            if(count.find(nums[i])!=count.end())
            {
                count[nums[i]]++;
            }
            else
            {
                count[nums[i]]=1;
            }
        }
        for(auto each:count)
        {
            if(each.second>1) return 1;
        }
        return 0;
    }
};

##To Study: 1.sort
注意:size()返回值为无符号整数

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int n=nums.size();
        for(int i=0;i<n-1;i++)
        {
            if(nums[i]==nums[i+1]) return 1;
        }
        return 0;
    }
};
//Unique and Erase
class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int n=nums.size();
        nums.erase(unique(nums.begin(),nums.end()),nums.end());
        return(n!=nums.size());
    }
};

2.set
1 LOC

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