Contains Duplicate II

Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between i and j is at most k.

Tags

Array, Hash Table

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {boolean}
 */
var containsNearbyDuplicate = function (nums, k) {
    var len = nums.length;

    for (var i = 0; i < len - 1; i++) {
        for (var j = len - 1; j > i; j--) {
            if (nums[i] === nums[j] && (j - i) <= k) {
                return true;
            }
        }
    }

    return false;
};

Another solution using hash table. Mapping value to index.
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {boolean}
 */
var containsNearbyDuplicate = function(nums, k) {
    var hash = [];
    var len = nums.length;
    if(len <= 1) {
        return false;
    }
    
    // Hash
    // value => index
    for(var i in nums) {
        if(hash[nums[i]]) {
            if(Math.abs(hash[nums[i]] - i) <= k) {
                return true;
            }
        } 
        hash[nums[i]] = i;
    }
    
    return false;
};


發佈了82 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章