给定一个整数数组和一个整数 k ,判断数组中是否存在两个不同的索引 i 和 j ,使得 nums [i] = nums [j] ,并且 i 和 j 的差的 绝对值 至多为 k 。
示例 1:
输入: nums = [1,2,3,1], k = 3输出: 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
}
