2017-08-02 70 views
0

问题描述:本文给出了219运行时错误的JavaScript

鉴于整数数组和一个整数k,找出是否有两个不同的指数i和阵列使得nums[i] = nums[j]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; 
} 

任何人都可以告诉我原因。

+0

请把阿雷NUMS,以更好地看到它,因为你在某些行代码让我混淆了 –

+0

你的方法名“containsDuplicate”表示比你在你的描述提及彼此的问题:又名检查绝对差异。请澄清问题并制定一个您需要回答的问题。 –

回答

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));

相关问题