219. Contains Duplicate II

来源:互联网 发布:中科院软件所邮编 编辑:程序博客网 时间:2024/06/05 16:03

1、题目描述

输入一个数组,和一个整数k。判断数组中是否存在两个相等的元素,且他们的索引小于等于k。


2、思路

hash table,用来保存数字key最后一次出现的索引value。

若当前数字已经保存在hash table中了,判断索引差是否小于等于k,

如果是,返回true。不然更新key对应的value值。

返回false。


3、代码

    bool containsNearbyDuplicate(vector<int>& nums, int k) {        map<int,int>m;        int n = nums.size();        for(int i=0;i<n;i++){            if(m.find(nums[i])==m.end())                m[nums[i]]=i;            else{                if(i-m[nums[i]]<=k)                    return true;                else                    m[nums[i]]=i;            }        }        return false;    }