219. 存在重复元素 II

小豆丁 1年前 ⋅ 760 阅读
219. 存在重复元素 II
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。

 

示例 1:

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

解析

直接散列表搞定

class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        Map<Integer,Integer> map = new HashMap<>();
        for(int i = 0 ;i < nums.length;i++){
            int val = nums[i];
            if(map.containsKey(val)){
                int index = map.get(val);
                if(i-index<=k) return true;
            }
            map.put(val,i);
        }
        return false;
    }
}