Minimum Distance Between Three Equal Elements I

Easy
Watch on YouTube ↗

Solution

class Solution {
    public int minimumDistance(int[] nums) {
        HashMap<Integer, List<Integer>> hmap = new HashMap<>();
        for(int i=0; i<nums.length; i++) {
            hmap.putIfAbsent(nums[i], new ArrayList<>());
            hmap.get(nums[i]).add(i);
        }
        int dist = Integer.MAX_VALUE;

        for(int key : hmap.keySet()) {
            if(hmap.get(key).size() < 3)
                continue;
            List<Integer> temp  = hmap.get(key);
            for(int i=0; i<temp.size()-2; i++) {
                int x = temp.get(i+1)-temp.get(i);
                int y = temp.get(i+2)-temp.get(i);
                int z = temp.get(i+2)- temp.get(i+1);
                dist = Math.min(dist, x+y+z);
            }
        }
        return dist==Integer.MAX_VALUE ? -1 : dist;
        
    }
}