Unique Number of Occurrences — Frequency Map Validation

Sanjeev SharmaSanjeev Sharma
2 min read

Advertisement

Problem 181 · Unique Number of Occurrences

Difficulty: Easy · Pattern: Frequency Map

Given an array, return true if no two distinct values share the same frequency.

Intuition

Build a frequency map, then check that all frequency values are distinct (use a set).

Solutions

// C
#include <stdbool.h>
#include <string.h>
bool uniqueOccurrences(int* arr, int n) {
    int freq[2001] = {0}; // values in [-1000,1000]
    for (int i = 0; i < n; i++) freq[arr[i]+1000]++;
    bool seen[n+1]; memset(seen, 0, sizeof(seen));
    for (int i = 0; i < 2001; i++) {
        if (freq[i] == 0) continue;
        if (seen[freq[i]]) return false;
        seen[freq[i]] = true;
    }
    return true;
}
// C++
bool uniqueOccurrences(vector<int>& arr) {
    unordered_map<int,int> freq;
    for (int x : arr) freq[x]++;
    unordered_set<int> seen;
    for (auto& [k,v] : freq) {
        if (!seen.insert(v).second) return false;
    }
    return true;
}
// Java
public boolean uniqueOccurrences(int[] arr) {
    Map<Integer,Integer> freq = new HashMap<>();
    for (int x : arr) freq.merge(x, 1, Integer::sum);
    Set<Integer> seen = new HashSet<>(freq.values());
    return seen.size() == freq.size();
}
// JavaScript
var uniqueOccurrences = function(arr) {
    const freq = new Map();
    for (const x of arr) freq.set(x, (freq.get(x) || 0) + 1);
    return new Set(freq.values()).size === freq.size;
};
# Python
from collections import Counter
def uniqueOccurrences(arr):
    c = Counter(arr)
    return len(set(c.values())) == len(c)

Complexity

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

Key Insight

Convert values to set — if size shrinks, a duplicate frequency exists.

Advertisement

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro