翻译
给定一个整型数组和一个整型数K,
找出是否存在两个不同的索引i和j,使得nums[i] = nums[j],
并且它们之间的距离最大为K。
原文
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.
分析
这里有一道非常相似的题目,大家可以去瞅瞅。
LeetCode 217 Contains Duplicate(包含重复数字)(Vector、hash)
本题也类似,使用unordered_map作存储,遍历数组所有整型数。
如果表中不存在则添加该数字的索引,否则计算找到的索引与此前记录索引的记录,是否小于等于K。
bool containsNearbyDuplicate(vector<int>& nums, int k) {
unordered_map<int, int> map;
for (int i = 0; i < nums.size(); ++i) {
if (map.find(nums[i]) != map.end() && i - map[nums[i]] <= k) return true;
else map[nums[i]] = i;
}
return false;
}