题目
Alice 有 n 枚糖, 其中第 i 枚糖的类型为 candyType [i] . Alice 注意到她的体重正在增长, 所以前去拜访了一位医生.
医生建议 Alice 要少摄入糖分, 只吃掉她所有糖的 n / 2 即可(n 是一个偶数). Alice 非常喜欢这些糖, 她想要在遵循医生建议的情况下, 尽可能吃到最多不同种类的糖.
给你一个长度为 n 的整数数组 candyType , 返回: Alice 在仅吃掉 n / 2 枚糖的情况下, 可以吃到糖的最多种类数.
分析
求指定数组不重复元素的个数. 特别的, 如果该值大于数组长度的二分之一, 那么直接返回数组长度的二分之一
代码
class Solution {
public int distributeCandies(int[] candyType) {
/*
思路
种类: 放到 set 去重
set.size 和 length/2 比较, 返回更小的
*/
Set<Integer> set = new HashSet<>();
for (int candy : candyType) {
set.add(candy);
}
return Math.min(candyType.length / 2, set.size());
}
}