给定一个整数数组和一个整数 k ,判断数组中是否存在两个不同的索引 ij ,使得 nums [i] = nums [j] ,并且 ij 的差的 绝对值 至多为 k
示例 1:

  1. 输入: nums = [1,2,3,1], k = 3
  2. 输出: true

示例 2:

输入: nums = [1,0,1,1], k = 1
输出: true

示例 3:

输入: nums = [1,2,3,1,2,3], k = 2
输出: false

解法一:哈希表

func containsNearbyDuplicate(nums []int, k int) bool {
    hash := make(map[int]int, len(nums))
    idx := 0
    for idx < len(nums) {
        cur := nums[idx]
        if is, ok := hash[cur]; ok {
            if abs(idx-is) <= k {
                return true
            }
        }
        hash[cur] = idx
        idx++
    }
    return false
}

func abs(x int) int {
    if x < 0 {
        return -x
    }
    return x
}