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 = 3Output: true
Example 2:
Input: nums = [1,0,1,1], k = 1Output: true
Example 3:
Input: nums = [1,2,3,1,2,3], k = 2Output: false
题意
判断给定数组中是否存在一组重复的数,它们的下标之差的绝对值不大于k。
思路
用Hash处理很简单。
代码实现
class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {if (i - map.getOrDefault(nums[i], -k - 1) <= k) {return true;}map.put(nums[i], i);}return false;}}
