题目:
Alice 有 n
枚糖,其中第 i
枚糖的类型为 candyType[i]
。Alice 注意到她的体重正在增长,所以前去拜访了一位医生。
医生建议 Alice 要少摄入糖分,只吃掉她所有糖的 n / 2
即可(n
是一个偶数)。Alice 非常喜欢这些糖,她想要在遵循医生建议的情况下,尽可能吃到最多不同种类的糖。
给你一个长度为 n
的整数数组 candyType
,返回: Alice 在仅吃掉 n / 2
枚糖的情况下,可以吃到糖的 最多 种类数。
思路:
本题可以分解为两个问题。一是有多少类的糖果?二是糖果的种类和吃掉的糖果数量的关系。如何解决多少类糖果的问题?可以利用set()无序不重复的特点,求出糖果的种类。
糖果的种类和吃掉的糖果数量的关系:吃掉糖果的种类n一定不能超过吃掉糖果的数量m。
当n<=m,返回n,当n>m,返回m
代码:
class Solution:
def distributeCandies(self, candyType: List[int]) -> int:
n = len(set(candyType))
m = int(0.5 * len(candyType))
if n <= m:
return n
else:
return m
心得体会:
得到的值应该是整数 (直接 return 0 不吃糖不发胖)