題目
來源:力扣(LeetCode)
鏈接:分糖果
解法一
時間複雜度O(nlogn)
空間複雜度O(1)
int cmp(const void*a,const void *b){
int *aa=(int*)a;
int *bb=(int*)b;
return *aa-*bb;
}
int distributeCandies(int* candies, int candiesSize){
int kindnum=1;
qsort(candies,candiesSize,sizeof(int),cmp);
for(int i=1;i<candiesSize;i++){
if(candies[i]!=candies[i-1]){
kindnum++;
}
if(kindnum>=candiesSize/2)
return candiesSize/2;
}
return kindnum;
}
解法二
時間複雜度O(n)
空間複雜度O(n)
class Solution {
public:
int distributeCandies(vector<int>& candies) {
set<int> kinds;
for(int i=0;i<candies.size();i++){
kinds.insert(candies[i]);
}
return min(kinds.size(),candies.size()/2);
}
};