题目考察的知识点:哈希

题目解答方法的文字分析:用unordered_map存储数据,先查找,如果找到,并且两数之间的距离<=k,则返回true;否则,需要更新这个结点,先删除再插入。

本题解析所用的编程语言:c++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param weights int整型vector 
     * @param n int整型 
     * @param k int整型 
     * @return bool布尔型
     */
    bool checkDuplicate(vector<int>& weights, int n, int k) {
        // write code here
        unordered_map<int, int> mp;
        for (int i = 0; i < n; ++i)
        {
            if (mp.count(weights[i]) && i - mp[weights[i]] <= k)
                return true;
            mp.erase(weights[i]);
            mp.insert(pair(weights[i], i));
        }
        return false;
    }
};