1. 程式人生 > >查詢表類演算法//存在重複元素 II

查詢表類演算法//存在重複元素 II

給定一個整數陣列和一個整數 k,判斷陣列中是否存在兩個不同的索引 i 和 j,使得 nums [i] = nums [j],並且 i 和 j 的差的絕對值最大為 k

示例 1:

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

示例 2:

輸入: nums = [1,0,1,1], k = 1
輸出: true

示例 3:

輸入: nums = [1,2,3,1,2,3], k = 2
輸出: false
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])){
                int sub = i - map.get(nums[i]);
                if(sub <= k)
                    return true;
                else
                    map.put(nums[i],i);
            }
            else
                map.put(nums[i],i);
        }
        return false;
    }
}