给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 ij,使得 nums [i] = nums [j],并且 ij 的差的 绝对值 至多为 k

解法

bool containsNearbyDuplicate(vector<int>& nums, int k) {

    unordered_map<int,int> nmap;
    for (int i = 0; i <nums.size();i++)
    {
        if (nmap.count(nums[i]) == 0)
            nmap[nums[i]] = i;
        else if (i - nmap[nums[i]] <=k)
            return true;
        else
            //不断更新nums[i]的最新索引,免去erase的消耗
            nmap[nums[i]] = i;
    }

    return false;

}