1207. Unique Number of Occurrences
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:
1 <= arr.length <= 1000-1000 <= arr[i] <= 1000
Solutions
Solution 1: Hash Table
Thinking
With \(n \le 1000\) it suffices to count each value and test that those frequencies are unique. One pass builds the counts; a set of the frequencies has the same size as the number of distinct values iff every frequency appears once.
We use a hash table \(cnt\) to count the frequency of each number in the array \(arr\), and then use another hash table \(vis\) to count the types of frequencies. Finally, we check whether the sizes of \(cnt\) and \(vis\) are equal.
The time complexity is \(O(n)\), and the space complexity is \(O(n)\). Here, \(n\) is the length of the array \(arr\).
1 2 3 4 | |
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 | |