使用javascript进行Leetcode 219运行时错误

时间:2017-08-02 12:27:17

标签: javascript

问题描述:

给定一个整数数组和一个整数k,找出数组中是否存在两个不同的索引ij,以便nums[i] = nums[j]和绝对差值ij之间的关联最多为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;
}

任何能告诉我原因的人。

1 个答案:

答案 0 :(得分:0)

我使用Array.prototype.some()确定k前面的数字是否等于当前数字n,它将返回true并立即停止迭代。

&#13;
&#13;
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;
&#13;
&#13;