【LeetCode】分糖果 Java 题解
题目描述
Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] 。Alice 注意到她的体重正在增长,所以前去拜访了一位医生。
医生建议 Alice 要少摄入糖分,只吃掉她所有糖的 n / 2 即可(n 是一个偶数)。Alice 非常喜欢这些糖,她想要在遵循医生建议的情况下,尽可能吃到最多不同种类的糖。
给你一个长度为 n 的整数数组 candyType ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的最多种类数。
复制代码
思路分析
今天的算法每日一题是数组题目,题目很长,我们重点只需要关心给你一个长度为 n 的整数数组 candyType ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的最多种类数。 根据这个重要提示,我们首先采用 hashSet 这种数据结构,统计所有糖果的种类 m,然后根据可以吃的最多糖果个数 n / 2, 与糖果种类比较。如果 n / 2 小于等于 m, 则最多吃 n / 2 种类,反之,最多吃 m 种类。 具体实现代码如下:
通过代码
复制代码
总结
上述解法的时间复杂度是 O(n), 空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/67e7038cdc47cf3d3668ac3db】。文章转载请联系作者。
评论