【Leetcode 219】 存在重复元素||——竟然不给用api!!

38 阅读1分钟

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 **i 和 **j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

示例 1:

输入: nums = [1,2,3,1], k = 3
输出: true

示例 2:

输入: nums = [1,0,1,1], k = 1
输出: true

示例 3:

输入: nums = [1,2,3,1,2,3], k = 2
输出: false

提示:

  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • 0 <= k <= 105
function containsNearbyDuplicate(nums: number[], k: number): boolean {
   const numMap = new Map<number, number>();
   for (let i = 0; i < nums.length; i++) {
     const num = nums[i];
     if (numMap.has(num) && i - numMap.get(num)! <= k) return true;
     numMap.set(num, i);
   }
   return false;
 }

用api

function containsNearbyDuplicate2(nums: number[], k: number): boolean {
   const numMap = new Map<number, number>();
   return nums.some((num, i) => {
     if (numMap.has(num) && i - numMap.get(num)! <= k) return true;
        numMap.set(num, i);
   });
}