【leetcode】219. 存在重复元素 II

33 阅读1分钟

leetcode-219.png

判断数组中存在的重复数字之间的 索引差值<=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;
};