219. Contains Duplicate II

Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j]and the difference between i and j is at most k.

class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        map<int, vector<int> > m = map<int, vector<int> >();
        for(int i=0;i<nums.size();i++){
            if(m.count(nums[i]) <= 0){
                vector<int> v = vector<int>();
                v.push_back(i);
                m[nums[i]] = v;
            }else{
                m[nums[i]].push_back(i);
            }
        }
        
        for (auto& x: m) {
            vector<int> &v = x.second;
            if(v.size() <= 1) continue;
            for(int i=0;i<v.size()-1;i++){
                if(v[i+1] - v[i] <= k)
                    return true;
            }
        }
        return false;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容