219. 存在重复元素 II

https://leetcode-cn.com/problems/contains-duplicate-ii/

解法一:

维护一个最多元素为k的set,利用set中无重复元素的特性,一次遍历数组,每次将一个元素写入set,超出k个则将最先写入的元素移出。若检测到相同元素,说明他们之间的距离不超过k,符合题意。

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {boolean}
 */
var containsNearbyDuplicate = function(nums, k) {
    s = new Set()
    for(let i in nums) {
        if (s.has(nums[i])) return true
        s.add(nums[i])
        if (s.size > k) {
            s.delete(nums[i-k])    //移出最早加入的元素
        }
    }
    return false
};

最后更新于