Skip to main content

存在重复元素-ii

Tips

题目类型: HashMap

相关题目:

题目

给定一个整数数组和一个整数 k, 判断数组中是否存在两个不同的索引 ij, 使得 nums[i] === nums[j], 并且 ij 的差的绝对值至多为 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
}