219. Contains Duplicate II (Easy)

https://leetcode.com/problems/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 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

Solutions

class Solution {

    public boolean containsNearbyDuplicate(int[] nums, int k) {
        if (nums == null || nums.length == 0) {
            return false;
        }

        // Last occurrence of given char
        Map<Integer, Integer> lastOcc = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int val = nums[i];
            if (!lastOcc.keySet().contains(val)) {
                lastOcc.put(val, i);

                continue;
            }

            // if the distance from last occurrence of this char to current is <= k
            if (i - lastOcc.get(val) <= k) {
                return true;
            }

            lastOcc.put(val, i);
        }

        return false;
    }
}

Incorrect Solutions

References

Copyright © iovi.com 2017 all right reserved,powered by GitbookLast Modification: 2020-07-03 00:26:46

results matching ""

    No results matching ""