Count values, then insert each frequency into a set and reject the first duplicate frequency.
Complexity
O(n) time and O(n) space.
Check whether every distinct array value has a distinct frequency.
Count values, then insert each frequency into a set and reject the first duplicate frequency.
O(n) time and O(n) space.
package main
func uniqueOccurrences(arr []int) bool {
count := map[int]int{}
for _, value := range arr {
count[value]++
}
seen := map[int]bool{}
for _, frequency := range count {
if seen[frequency] {
return false
}
seen[frequency] = true
}
return true
}
from collections import Counter
class Solution:
def uniqueOccurrences(self, arr: list[int]) -> bool:
frequencies = Counter(arr).values()
return len(set(frequencies)) == len(frequencies)
function uniqueOccurrences(arr: number[]): boolean {
const count = new Map<number, number>(); for (const value of arr) count.set(value, (count.get(value) ?? 0) + 1);
return new Set(count.values()).size === count.size;
}