判断数组中存在的重复数字之间的 索引差值<=k 是否成立
这一题还是比较简单的,使用map来存储当前数字的索引,如果再次遇到相同的数字,则计算两者之间的差值做比较(成立则返回true),然后更新最新的索引值
var containsNearbyDuplicate = function (nums, k) {
let map = new Map()
for (let i = 0; i < nums.length; ++i) {
if (map.has(nums[i])) {
let diff = i - map.get(nums[i])
if (diff <= k) return true
}
map.set(nums[i], i)
}
return false
};
优化版本,两个if可以放在一起判断
var containsNearbyDuplicate = function (nums, k) {
const map = new Map();
for (let i = 0; i < nums.length; i++) {
if (map.has(nums[i]) && i - map.get(nums[i]) <= k) {
return true;
}
map.set(nums[i], i);
}
return false;
};