LeetCode 575. 分糖果
题目链接
思路分析
这个题因为要求女方的糖果获得的种类最多,那么我们可以采用贪心的思想去解题。
因为题目加了另外一个限制条件:我们要对这堆糖果进行均分的策略。那么我们可以先去统计这堆糖果的种类有多少(因为要求女方种类最多)。
但是由于引入均分策略,所以我们可能会出现一个情况:
· 当糖果种类出现次数比糖果对半分的数量还多(即每个种类都只出现一颗糖果,这样会导致所有糖果都被女方拿走,导致男方无糖果)
那么这个时候我们就不能以糖果种数来进行判断,得使用糖果总数除以2
来进行判断。
代码实现
class Solution {
public int distributeCandies(int[] candies) {
HashSet<Integer> set = new HashSet<>();
int count = 0;
for(int candy : candies){
set.add(candy);
count++;
}
return Math.min(count >> 1, set.size());
}
}