LeetCode 1207. Unique Number of Occurrences


原题链接在这里:https://leetcode.com/problems/unique-number-of-occurrences/

题目:

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

题解:

Have a map count num to its frequency.

Then go through the map frequency and use a set to record if there is any duplicate.

Time Complexity: O(n). n = arr.length.

Space: O(n).

AC Java:

 1 class Solution {
 2     public boolean uniqueOccurrences(int[] arr) {
 3         if(arr == null || arr.length == 0){
 4             return true;
 5         }
 6         
 7         HashMap numToFreq = new HashMap<>();
 8         HashSet freqSet = new HashSet<>();
 9         for(int num : arr){
10             numToFreq.put(num, numToFreq.getOrDefault(num, 0) + 1);
11         }
12         
13         for(int n : numToFreq.values()){
14             if(freqSet.contains(n)){
15                 return false;
16             }
17             
18             freqSet.add(n);
19         }
20         
21         return true;
22     }
23 }