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);
}
};