1207. 獨一無二的出現次數

知識點:set;雜湊表

題目描述

給你一個整數陣列 arr,請你幫忙統計陣列中每個數的出現次數。

如果每個數的出現次數都是獨一無二的,就返回 true;否則返回 false。。

示例
輸入:arr = [1,2,2,1,1,3]
輸出:true
解釋:在該陣列中,1 出現了 3 次,2 出現了 2 次,3 只出現了 1 次。沒有兩個數的出現次數相同。 輸入:arr = [1,2]
輸出:false 輸入:arr = [-3,0,1,-3,1,1,1,-3,10,0]
輸出:true

解法一:雜湊表+set

出現次數 --> 雜湊表;

獨一無二 --> set;

class Solution {
public boolean uniqueOccurrences(int[] arr) {
Map<Integer, Integer> map = new HashMap<>();
for(Integer i : arr){
map.put(i, map.getOrDefault(i, 0)+1);
}
Set<Integer> set = new HashSet<>();
for(Integer i : map.keySet()){
if(set.contains(map.get(i))) return false;
else set.add(map.get(i));
}
return true;
}
}

時間複雜度

體會

出現什麼統計字元或者數字出現的次數,用雜湊表;

出現什麼唯一,獨一無二,有無重複,用set的不可重複性;

統計次數 --> 雜湊表;

獨一無二 --> set;