力扣575分糖果-哈希

1、

2、

主要是考慮一共有多少不同的糖果m

以及糖果總數減去m也就是剩下的相同的糖果數量n

如果不一樣個數乘2小於總數  返回不一樣的

否則返回總數的一般

 

class Solution {
public:
    int distributeCandies(vector<int>& candies) {
        map<int,int> m;
        for(int i=0;i<candies.size();i++)
        {
            m[candies[i]]++;
        }
        int size=m.size();////不一樣的個數
        int seem=candies.size()-size;//多餘相同的

            if(size*2<candies.size())
            {
                return size;
            }
            else return candies.size()/2;
    }
};

黃子哥

class Solution {
public:
    int distributeCandies(vector<int>& candies) {
        map<int,int> p;
        int size = candies.size();
        int cnt = 0;
        for(int e : candies){
            if(p.find(e) != p.end()){
                p.insert(make_pair(e,p[e] + 1));
            }else{
                p.insert(make_pair(e,1));
                cnt ++;
            }
        }
        return min(cnt,size/2);
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章