给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。
示例 1:
1 2
| 输入: nums = [1,2,3,1], k = 3 输出: true
|
示例 2:
1 2
| 输入: nums = [1,0,1,1], k = 1 输出: true
|
示例 3:
1 2
| 输入: nums = [1,2,3,1,2,3], k = 2 输出: false
|
暴力破解法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
var containsNearbyDuplicate = function (nums, k) { for (let i = 0; i < nums.length; i++) { for (let j = i + 1; j <= i + k; j++) { if (nums[i] === nums[j]) { return true; } } } return false; };
|
利用 Map
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| var containsNearbyDuplicate = function (nums, k) { let map = new Map(); for (let i = 0; i < nums.length; i++) { let j = map.get(nums[i]); if (j === undefined) { map.set(nums[i], i); } else if (i - j <= k) { return true; } else { map.set(nums[i], i); } } return false; };
|