给定一个整数数组和一个整数 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
方法一:
使用js自带的数组方法实现,遍历数组,对每一个数组对象向后使用indexOf判断相等的值的下标index,如果存在计算index和数组索引i的差值,如果小于k就返回true
var containsNearbyDuplicate = function (nums, k) {
for (let i = 0; i < nums.length; i ++) {
let index = nums.indexOf(nums[i],i+1)
console.log(index);
if(index-i<=k&&index!=-1){
return true
}
};
return false
}
方法二
使用哈希表存放数据,维护哈希表的长度为k,如果当前数组元素存在于哈希表,则返回true
var containsNearbyDuplicate = function(nums, k) {
let set = new Set()
for (let i = 0; i < nums.length; i++) {
if(set.has(nums[i])){
return true
}
set.add(nums[i])
if(set.size > k){
set.delete(nums[i - k])
}
}
return false
};
