分糖果

題目

來源:力扣(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);
    }
};
發佈了38 篇原創文章 · 獲贊 13 · 訪問量 4026
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章