LeetCode 575. 分糖果

题目链接

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());
    }
}
posted @ 2020-10-18 09:27  ZJPang  阅读(85)  评论(0编辑  收藏  举报