Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] 。Alice 注意到她的体重正在增长,所以前去拜访了一位医生。
医生建议 Alice 要少摄入糖分,只吃掉她所有糖的 n / 2 即可(n 是一个偶数)。Alice 非常喜欢这些糖,她想要在遵循医生建议的情况下,尽可能吃到最多不同种类的糖。
给你一个长度为 n 的整数数组 candyType ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的 最多 种类数。
class Solution {
public:
int distributeCandies(vector<int>& candyType) {
int n=candyType.size();
int ans=0;
//建立哈希表映射该类型糖果是否被吃过
unordered_map<int,bool>mp;
//遍历糖果数组
for(int i=0;i<n;i++){
//如果吃的没有到达n/2
if(ans<n/2){
//并且该类型糖果未被吃过
if(mp[candyType[i]]!=true){
//吃的类型++
ans++;
//在哈希表中将该类型映射为吃过
mp[candyType[i]]=true;
}
}
//吃的种类数大于最大能吃的 退出循环
else{
break;
}
}
//返回种类数
return ans;
}
};
206

被折叠的 条评论
为什么被折叠?



