Contains Duplicate II
Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between iand j is at most k.
思路:
用hashtable记录num和value,但是需要注意的是,为了防止数字是0,因此记录的num号需要+1;另外,有可能一个数字会出现很多次,因此需要记录最后两个一样数字的距离。
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
int n=nums.size();
if(k==0||n==0||n==1) return 0;
map<int,int> mp;
for(int i=0; i<n;i++)
{
if(mp[nums[i]]==0) mp[nums[i]]=i+1;
else if(i+1-mp[nums[i]]<=k) return 1;
else mp[nums[i]]=i+1;
}
return 0;
}
};