// https://leetcode.com/problems/check-if-array-is-good // T: O(N) // S: O(N) import java.util.HashMap; import java.util.Map; public class CheckIfArrayIsGood { public boolean isGood(int[] array) { final Map<Integer, Integer> frequencies = getFrequencies(array); for (int i = 1 ; i < array.length - 1 ; i++) { if (frequencies.getOrDefault(i, 0) != 1) { return false; } } return frequencies.getOrDefault(array.length - 1, 0) == 2; } private Map<Integer, Integer> getFrequencies(int[] array) { final Map<Integer, Integer> result = new HashMap<>(); for (int element : array) { result.put(element, result.getOrDefault(element, 0) + 1); } return result; } }