leetCode 编号219

3 阅读1分钟

219. 存在重复元素 II:给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 **i 和 **j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

思路:(原作者题解跳转
  1. 建立哈希表let obj = new Map(),遍历数组obj.set(nums[i], i)添加进哈希表,如果obj.has(nums[i])存在,则i - obj.get(nums[i]) <= k对比,满足则返回true,循环结束没返回true,则表示不存在,返回false
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {boolean}
 */
var containsNearbyDuplicate = function (nums, k) {
    let len = nums.length
    let obj = new Map()
    for(let i = 0; i < len; i++) {
        if(obj.has(nums[i]) && i - obj.get(nums[i]) <= k) {
            return true
        }
        obj.set(nums[i], i)
    }
    return false
};