存在重复元素-ii
Tips
题目
给定一个整数数组和一个整数 k
, 判断数组中是否存在两个不同的索引 i
和 j
, 使得 nums[i] === nums[j]
, 并且 i
和 j
的差的绝对值至多为 k
.
示例
输入: nums = [1,2,3,1], k = 3
输出: true
题解
哈希表, 下一题.
/**
* @param {number[]} nums
* @param {number} k
* @return {boolean}
*/
var containsNearbyDuplicate = function (nums, k) {
const map = new Map()
for (let i = 0; i < nums.length; i++) {
const num = nums[i]
if (map.has(num)) {
if (Math.abs(i - map.get(num)) <= k) return true
// 如果找到一对相同的元素, 但不满足距离小于等于 k
// 记得更新下 num 的索引
map.set(num, i)
} else {
map.set(num, i)
}
}
return false
}