leetcode【数组】-----217.Contains Duplicate(存在重复元素)

版权声明: https://blog.csdn.net/zl6481033/article/details/88536758

1、题目描述

2、分析

        首先应该想到的是使用哈希表将数组存起来,然后遍历哈希表就行。其次还有一个解法应该也是比较容易想到的,那就是现将数组排序,然后遍历一遍数组查询数组相邻的两个元素就好。需要注意的一个问题是,在遍历数组时,size函数返回的是一个size_type类型,是无符号的。如果使用一个int类型的数和它的返回值相比较就会出错。有两种解决办法一是使用一个中间变量,比如int n=nums.size()-1,这样其实就将返回值转换成了int类型,还有一种方法是,直接使用强制类型转换。

3、代码

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        //if(nums.empty()) return false;
        sort(nums.begin(),nums.end());
        int flag=0;
        for(int i=0;i<(int)nums.size()-1;++i){
            if(nums[i]==nums[i+1])
            return true;
                
        }        
            return false;  
    }
};

//哈希表
class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        unordered_map<int, int> m;
        for (int i = 0; i < nums.size(); ++i) {
            if (m.find(nums[i]) != m.end()) return true;
            ++m[nums[i]];
        }
        return false;
    }
};

4、相关知识点

        排序遍历这个就不说,哈希表这个还是要熟悉unordered_map的基本操作,学会一边遍历一遍插入的操作。和两数之和那个题有相同之处。

猜你喜欢

转载自blog.csdn.net/zl6481033/article/details/88536758