219. 存在重复元素 II

转载自Leet Code

题目描述

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

示例 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

我的代码

\(T(N) = O(N)\), \(S(N) = O(min(n,k))\)

{.line-numbers}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MySolution219 
{
public boolean containsNearbyDuplicate(int[] nums, int k)
{
HashMap<Integer, Integer> map = new HashMap();

for (int j=0; j<nums.length; j++)
{
if (map.keySet().contains(nums[j])&&Math.abs(map.get(nums[j])-j)<=k)
return true;
map.put(nums[j], j);
}
return false;
}
}