217.Contains Duplicate


给定一个数组,求其中是否存在重复的元素,有重复,返回true;否则,返回fasle。
Input: [1,2,3,1]
Output: true

思路:
一、用哈希字典存储元素,遍历数组中的元素若存在,则返回false;提交OJ,虽然AC了,但有点慢。

bool containDuplicate(vector<int>& nums) {
    unordered_map<int, int> map;
    for (int i = 0; i < nums.size(); i++) {
        if (map.count(nums[i])) return true;
        map[nums[i]] = 1;
    }
    return false;
}

 

二、稍微改进,先排序,对排序后的数组遍历,速度比之前的快一点。

bool containDuplicate(vector<int>& nums) {
    if (nums.size < 2) return false;
    sort(nums.begin(),nums.end());
    for (int i = 0; i < nums.size() - 1; i++) {
        if (nums[i] == nums[i + 1]) return true;
    }
    return false;
}

 

posted @ 2020-05-11 18:38  星海寻梦233  阅读(79)  评论(0编辑  收藏  举报