内容
给定一个整数数组和一个整数 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
思路
这里就是利用map(对象)用来记录每次遍历的值(key)的下标(value),如果某次遍历中,遇到了一个已经在map中存在的键值对,那么这个时候判断当前的下标的绝对值之差是否在k的范围内
代码
/**
* @param {number[]} nums
* @param {number} k
* @return {boolean}
*/
var containsNearbyDuplicate = function(nums, k) {
var map={};
for(var i=0;i<nums.length;i++){
if(map[nums[i]]>=0 && Math.abs(map[nums[i]]-i)<=k){
return true;
}else{
map[nums[i]]=i;
}
}
return false;
};
网友评论