力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
给你一个整数数组
nums和一个整数k,判断数组中是否存在两个 不同的索引i和j,满足nums[i] == nums[j]且abs(i - j) <= k。如果存在,返回true;否则,返回false。
题解:哈希,记录最大的已经存在的下标
代码如下:
- class Solution {
- public boolean containsNearbyDuplicate(int[] nums, int k) {
- if(nums.length == 0) {
- return false;
- }
- Map
map = new HashMap<>(); - for(int i = 0; i < nums.length; i++) {
- if(map.containsKey(nums[i]) && i - map.get(nums[i]) <= k){
- return true;
- }
- map.put(nums[i],i);
- }
- return false;
- }
- }