Unique Number of Occurrences

Problem Description

Given an array of integers arr, return true if the number of occurrences of each value in the array is unique or false otherwise.

 

Example 1:

Input: arr = [1,2,2,1,1,3]
Output: true
Explanation: The value 1 has 3 occurrences, 2 has 2 and 3 has 1. No two values have the same number of occurrences.

Example 2:

Input: arr = [1,2]
Output: false

Example 3:

Input: arr = [-3,0,1,-3,1,1,1,-3,10,0]
Output: true

 

Constraints:

Solution (Go)

func uniqueOccurrences(arr []int) bool {
    m := make(map[int]int)
    for _, i := range arr {
        if _, ok := m[i]; ok {
            m[i] = m[i] + 1
        } else {
            m[i] = 1
        }
    }
    s := make(map[int]bool)
    for _, v := range m {
        s[v] = true
    }
    return len(m) == len(s)
}