#每日一题

题目:

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 不吃糖不发胖)

原题链接:https://leetcode.cn/problems/distribute-candies/solutions/1072396/fen-tang-guo-by-leetcode-solution-l4f6

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值