问题描述

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.

数组中是否包含两个相同的数

思路及代码

1 使用集合保存每一次访问的数,如果当前数已经存在,则直接返回true;

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        set<int> data;
        for(int i=0;i<nums.size();i++) {
            if(data.find(nums[i])!=data.end()) {
                return true;
            }
            data.insert(nums[i]);
        }
        return false;
    }
};

2 方法1的简洁版:将nums所有数都放到集合中,直接比较nums的长度与集合的长度,如果不一样,则说明nums中有一样的数,返回true;

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