219. 存在重复元素 II
描述
给定一个整数数组和一个整数 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
思路
- 最简单的 HashMap 应用,查找数组中的相同元素。
- 用空间复杂度 换取 时间复杂度。空间复杂度 : O(n),时间复杂度 : O(n)。
- 与 217 题几乎一样。
217 题解答:https://blog.csdn.net/weixin_38518846/article/details/108090855
代码
let containsNearbyDuplicate = function(nums, k) {
let MapN = new Map()
let _boo = false
nums.forEach((item,index) => {
if(MapN.get(item) !== undefined){
if(index - MapN.get(item)<=k){
_boo = true
return false
}
}
MapN.set(item,index)
})
return _boo
};