给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。

    1. 示例 1:
    2. 输入: nums = [1,2,3,1], k = 3
    3. 输出: true
    4. 示例 2:
    5. 输入: nums = [1,0,1,1], k = 1
    6. 输出: true
    7. 示例 3:
    8. 输入: nums = [1,2,3,1,2,3], k = 2
    9. 输出: false

    方法一:
    使用js自带的数组方法实现,遍历数组,对每一个数组对象向后使用indexOf判断相等的值的下标index,如果存在计算index和数组索引i的差值,如果小于k就返回true

    var containsNearbyDuplicate = function (nums, k) {
          for (let i = 0; i  < nums.length; i ++) {
            let index = nums.indexOf(nums[i],i+1)
            console.log(index);
            if(index-i<=k&&index!=-1){
              return true
            }
          };
          return false
      }
    

    方法二
    使用哈希表存放数据,维护哈希表的长度为k,如果当前数组元素存在于哈希表,则返回true

    var containsNearbyDuplicate = function(nums, k) {
        let set = new Set()
    
         for (let i = 0; i < nums.length; i++) {
           if(set.has(nums[i])){
             return true
           }
           set.add(nums[i])
           if(set.size > k){
             set.delete(nums[i - k])
           }
         }
         return false
    };