1207. 獨一無二的出現次數
題目
給你一個整數數組 arr,請你幫忙統計數組中每個數的出現次數。
如果每個數的出現次數都是獨一無二的,就返回 true;否則返回 false。
示例 1:
輸入:arr = [1,2,2,1,1,3]
輸出:true
解釋:在該數組中,1 出現了 3 次,2 出現了 2 次,3 只出現了 1
次。沒有兩個數的出現次數相同。
示例 2:
輸入:arr = [1,2]
輸出:false
示例 3:
輸入:arr = [-3,0,1,-3,1,1,1,-3,10,0]
輸出:true
提示:
- 1 <= arr.length <= 1000
- -1000 <= arr[i] <= 1000
分析
統計出現的次數,然后在遍歷次數值是否有相同,使用HashMap統計出現次數,key為數字,value為數字出現的次數,然后用HashSet去重,最后兩者長度相同表示沒有重復,或者判斷放入HashSet時的返回值,HashSet當放入重復值時返回false
題解
class Solution {public boolean uniqueOccurrences(int[] arr) {// Hash和Set,hash用來讀取數組,數字為key,數字出現次數為value,然后將將值寫入Set判斷值是否重復HashMap<Integer, Integer> map = new HashMap<>();for(int num : arr){// 有就次數+1,第一次時默認為0map.put(num, map.getOrDefault(num, 0) + 1);}HashSet set = new HashSet();for(Map.Entry h : map.entrySet()){set.add(h.getValue());}return set.size() == map.size();}
}