给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。
- 示例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
- 题解1
var containsNearbyDuplicate = function(nums, k) {
let len = nums.length
for(let i =0;i<len;i++){
for(let j =i+1;j<len;j++){
if(nums[i]===nums[j]&&Math.abs(i-j)<=k){
return true
}
}
}
return false
};
- 题解2
var containsNearbyDuplicate = function(nums,k){
let len =nums.length,set = new Set();
for(let i =0;i<len;i++){
if(set.has(nums[i])){
return true
}
set.add(nums[i])
if(set.size>k){
set.delete(nums[i-k])
}
}
return false
}
- 题解3
var containsNearbyDuplicate = function(nums,k){
let len = nums.length,map = new Map()
for(let i =0;i<len;i++){
let num = nums[i]
if(map.has(num)&&i-map.get(num)<=k){
return true
}
map.set(num,i)
}
return false
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate-ii