【leetcode】2200. 找出数组中的所有 K 近邻下标(js实现)

1. 题目

2200. 找出数组中的所有 K 近邻下标
在这里插入图片描述

2. 思路

  1. 遍历nums,找到与key相同的元素的索引idx,然后以它为原点,将[idx - k, idx + k]的索引都加入到set
  2. 最终将set进行去重处理即可
  3. 注意对边界的处理:有可能idx-k会小于0,idx+k会大于nums.length - 1

3. 代码

let nums = [2,2,2,2,2], key = 2, k = 2
function findKDistantIndices(nums, key, k) {
    let set = new Set()
    const n = nums.length
    nums.forEach((item, idx) => {
        if (item === key) {
            // console.log(Math.max(0, idx - k), idx - k);
            // console.log(Math.min(idx + k, n - 1), idx + k);
            for (let i = Math.max(0, idx - k); i <= Math.min(idx + k, n - 1); i++) {
                set.add(i)
            }
        }
    })
    return [...set]
}

console.log(findKDistantIndices(nums, key, k));

版权声明:本文为weixin_44109827原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。