2017-08-02 38 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));

相關問題