Leetcode 1207. 獨一無二的出現次數(C語言)
阿新 • • 發佈:2020-10-28
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
解題思路
- 設定一個計數器
count
統計每個數值出現的次數,把對應數值作為下標註意負值,因此可以加上MAXN
。 - 設定一個計數器的計數器,如果有兩個以上的數出現次數相同,那麼肯定有對應的多個
count
相等,即存在count_count
的值大於等於2。
解題程式碼
#define MAXN 1010 bool uniqueOccurrences(int* arr, int arrSize){ int count[MAXN*2]; int count_count[MAXN*2]; memset(count,0,sizeof(count)); memset(count_count,0,sizeof(count_count)); int i = 0; for(;i<arrSize;i++) { count[arr[i]+MAXN]++; } for(i=0;i<MAXN*2;i++) { count_count[count[i]]+=count[i]==0?0:1; } for(i = 0;i<MAXN*2;i++) { if(count_count[i] >= 2) return false; } return true; }