其他分享
首页 > 其他分享> > 219. 存在重复元素 II

219. 存在重复元素 II

作者:互联网

 

思路 难度简单

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

 

示例 1:

输入:nums = [1,2,3,1], k= 3
输出:true

示例 2:

输入:nums = [1,0,1,1], k=1
输出:true

示例 3:

输入:nums = [1,2,3,1,2,3], k=2
输出:false

 

 

class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        unordered_map<int,int> cnt_map;
        for(int i = 0; i < nums.size();i++) {
            if (cnt_map.find(nums[i]) != cnt_map.end()) {
                return true;
            }
            cnt_map[nums[i]]++;
            if (cnt_map.size()>=k+1) {
                cnt_map.erase(nums[i-k]);
            }
        }
        return false;
    }
};

 

标签:map,cnt,false,nums,重复,示例,219,II,true
来源: https://www.cnblogs.com/zle1992/p/16610563.html