LeetCode 219. Contains Duplicate II (Java)

题目:

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

PS:这个题目的描述有错误,应该是i和j的最小差值不大于k

解答:

class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        HashMap<Integer,Integer> map=new HashMap<>();
        for(int i=0;i<nums.length;i++){
            if(map.containsKey(nums[i])){
                if(i-map.get(nums[i])<=k)
                    return true;
                    //注意此处更新hash表的数据,否则不可通过
                    map.put(nums[i],i);
            }else{
                map.put(nums[i],i);
            }
        }
        return false;
    }
}

你可能感兴趣的:(LeetCode)