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

function containsNearbyDuplicate(nums: number[], k: number): boolean {
    // Map 存储:数字 -> 该数字最后一次出现的索引
    const map = new Map<number, number>();
 
    for (let i = 0; i < nums.length; i++) {
        const n = nums[i];
 
        // 如果之前见过这个数,且距离满足条件
        if (map.has(n) && i - map.get(n)! <= k) {
            return true;
        }
 
        // 无论是否见过,都更新该数字的最末索引
        // 这样可以确保下次计算的是“最短距离”
        map.set(n, i);
    }
 
    return false;
	};