原题:

​力扣链接:575. 分糖果

题目简述:

Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] 。Alice 注意到她的体重正在增长,所以前去拜访了一位医生。

医生建议 Alice 要少摄入糖分,只吃掉她所有糖的 n / 2 即可(n 是一个偶数)。Alice 非常喜欢这些糖,她想要在遵循医生建议的情况下,尽可能吃到最多不同种类的糖。

给你一个长度为 n 的整数数组 candyType ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的最多种类数。

解题思路

1.遍历输入的糖果数组,把类型插入哈希表;
2.n/2与总类型数ncandyType比较,如果n/2大,则输出ncandyTyp,否则输出n/2;
3.over;

C++代码:

class Solution {
public:
int distributeCandies(vector<int>& candyType) {
int n = candyType.size();

unordered_map<int, int> umap;

int i = 0;
for(i = 0;i < n; i++)
{
umap[candyType[i]];
}

int ncandyType = umap.size();
if(n/2 > ncandyType)
{
return ncandyType;
}
else
{
return n/2;
}

return -1;
}
};

力扣结果展示:

【快乐水题】575. 分糖果_leetcode