Contains Duplicate II

Problem

Given an integer array nums and an integer k, return true if there are two distinct indices i and j in the array such that nums[i] == nums[j] and abs(i - j) <= 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

Constraints:

  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • 0 <= k <= 105

Solution

Time: O(n) Space: O(n)

class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        // key: number
        // value: monotonic index
        var m = new HashMap<Integer, Integer>();

        for (var i = 0; i < nums.length; i++) {
            var n = nums[i];
            if (m.containsKey(n)) {
                if (Math.abs(m.get(n) - i) <= k) {
                    return true;
                }
            }
            m.put(n, i);
        }

        return false;
    }
}

Recent posts from blogs that I like

Bookbear Local 9/20/26

odds and ends

via bookbear express

Painting la Manche: le Havre to Ouessant

Paintings by Paul Signac, Claude Monet, Félix Vallotton, Millet, John Singer Sargent, Maurice Denis, and others.

via The Eclectic Light Company

System One models like Jev can train their own replacements

“System One” models like Jev are fast general classifiers. Classifiers have existed since 1958, but they have to be trained for specific tasks: if you build a classifier to identify images of dogs, it can’t be used to tell you if a streetlight is red, or if a letter is urgent. Like a LLM, Jev can be...

via Sean Goedecke