219. Contains Duplicate II
Easy
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference between i and j is at most k.
Example 1:
Input: nums = [1,2,3,1], k = 3
Output: true
Example 2:
Input: nums = [1,0,1,1], k = 1
Output: true
Example 3:
Input: nums = [1,2,3,1,2,3], k = 2
Output: false
题意
给定一个数组和一个整数k,判断数组中是否有重复元素,其下标之差小于等于k
思路
哈希表,键为数组中的元素,值为该元素最后一次被遍历到的下标
代码
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int index = 0;
for (int num: nums) {
if (map.containsKey(num) && index - map.get(num) <= k) {
return true;
} else {
map.put(num, index);
}
++index;
}
return false;
}
}