219. 存在重复元素 II

2022/8/22 6:57:09

本文主要是介绍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;
    }
};

 



这篇关于219. 存在重复元素 II的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程