问题描述:
给定一个整数数组和一个整数k
,找出数组中是否存在两个不同的索引i
和j
,以便nums[i] = nums[j]
和绝对差值i
和j
之间的关联最多为k
。
var containsDuplicate = function(nums, k) {
var maps = {};
for (var i = 0; i < nums.length; i++) {
var key = nums[i];
if (maps[key] == undefined) {
maps[key] = i;
} else if (i - maps[key] < k) {
return true;
} else {
maps[key] = i;
}
}
return false;
}
任何能告诉我原因的人。
答案 0 :(得分:0)
我使用Array.prototype.some()确定k
前面的数字是否等于当前数字n
,它将返回true并立即停止迭代。
function containsDuplicate(nums, k) {
return nums.some((n, i) => n === nums[i + k]);
}
console.log('--- Testing for true ---');
console.log(containsDuplicate([5,8,5,3,9,5], 2));
console.log(containsDuplicate([5,8,6,3,9,5], 5));
console.log(containsDuplicate([5,5,6,3,9,6], 1));
console.log(containsDuplicate([5,8,6,5,9,6], 3));
console.log('--- Testing for false ---');
console.log(containsDuplicate([5,8,6,3,9,5], 2));
console.log(containsDuplicate([5,8], 2));
console.log(containsDuplicate([5,5], 2));
console.log(containsDuplicate([], 2));
&#13;