思路
題目找的是出現次數的出現次數。
先用哈希表freq記錄各自數字出現的次數。
再用另一個哈希表,計算同樣出現次數的數字,各有多少個。
最後遍歷數組,從freq找到數字的出現次數cnt,
再拿cnt去第二張哈希表找,看是不是只有一個數字有這個出現次數。
程式碼
哈希表
class Solution {
public:
int firstUniqueFreq(vector<int>& nums) {
int n = nums.size();
unordered_map<int, int> freq, umap;
for(int x : nums) freq[x]++; // 紀錄出現次數
for(auto [k, v] : freq) umap[v]++; // 紀錄出現次數的出現次數
for(int x : nums) {
if(umap[freq[x]] == 1) { // 如果為 1, 表示獨特。
return x;
}
}
return -1;
ㄋ }
};
複雜度分析
- 時間複雜度:
- 空間複雜度: