219. 存在重复元素 II
1. 题目
给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。
示例 1:
1  | 输入:nums = [1,2,3,1], k = 3  | 
示例 2:
1  | 输入:nums = [1,0,1,1], k = 1  | 
示例 3:
1  | 输入:nums = [1,2,3,1,2,3], k = 2  | 
提示:
1 <= nums.length <= 10^5-10^9 <= nums[i] <= 10^90 <= k <= 10^5
2. 思路
初始化哈希表
map用于记录数值出现的下标位置遍历
nums数组,判断哈希表中是否存在该数值,如果存在该值,则判断该值下标位置与当前值下标位置是否满足题目要求的abs(i - j) <= k条件- 如果满足,则直接返回结果
true - 如果不满足,则将当前数值放入哈希表中
 
- 如果满足,则直接返回结果
 将当前数值下标放置入哈希表可能会存在覆盖的情况,但没关系因为始终要保证两个数值的下标距离尽可能的小,以此满足题目
abs(i - j) <= k条件
3. 代码
1  | class Solution {  | 
4. 复杂度
- 时间复杂度:O(n)
 - 空间复杂度:O(n)
 
