[LeetCode]217. Contains Duplicate

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.

Example 1:

Input: [1,2,3,1]
Output: true
Example 2:

Input: [1,2,3,4]
Output: false
Example 3:

Input: [1,1,1,3,3,4,3,2,4,2]
Output: true

题目解析:给定一个 int 数组, 找出是否含有重复值.
思路:

  • 1、因为需要寻找重复的数字,所以想到之前使用的map,利用map自带的函数来查找重复的值。c++中unordered_map 为hash表,所以实现起来比普通map速度要快。
class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        map<int,int> resmap;
        for(auto i:nums)
        {
            if( resmap.find(i)!= resmap.end())
            {
                return true;
            }else{
                 resmap[i]=1;
            }
          
        }
          return false;
    }
};
class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        if(nums.size()<2)return false;
         unordered_map<int,int> resmap;
        for(int i=0;i<nums.size();i++)
        {
        //  find函数查看的key的值,所以下面插入时需要将key的值写为nums[i]
            if(resmap.find(nums[i])!=resmap.end())
            {
                return true;
               
            }else{
             resmap.insert(make_pair(nums[i],i));
           // ++resmap[nums[i]];
            }
            
        }
        return false;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_39116058/article/details/86515275
今日推荐