Leetcode Contains Duplicate II

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 difference between i and j is at most k.


解题思路:

想到了一种结构map, key 是该值,value是该值对应的前一个index.


Java code:

public boolean containsNearbyDuplicate(int[] nums, int k) {
        Map<Integer, Integer> values = new HashMap<Integer, Integer>(); //first is value, second is current index
        for(int i = 0; i< nums.length; i++){
            if(values.containsKey(nums[i])){
                int x = values.get(nums[i]);
                if((i-x) <= k) {
                    return true;
                }
            }
            values.put(nums[i], i);
        }
        return false;
    }
原文地址:https://www.cnblogs.com/anne-vista/p/4827794.html