0%

leetCode-219:Contains Duplicate II

问题描述

给定一个整形数组和一个整数 k,要求判断数组中是否存在两个相等的元素,使其下标之差小于等于 k。题目链接:**点我**

样例输入输出

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

输出:true

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

输出:false

问题解法

此题比较简单,用一个 map 存储数组元素及其下标,然后遍历数组,判断元素是否已经存在 map 中,如果存在,则判断 map 中的下标与当前元素下标之差是否小于等于 k,是则返回,否则将当前元素放入 map 中。代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution
{
public boolean containsNearbyDuplicate(int[] nums, int k)
{
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++)
{
if (map.containsKey(nums[i]) && Math.abs(map.get(nums[i]) - i) <= k)
{
return true;
}
map.put(nums[i], i);
}

return false;
}
}