給定一個整型數組和一個整型數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& nums, int k) {
unordered_map 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;
}