代码随想录 - Day36 - 贪心算法

代码随想录 - Day36 - 贪心算法

455. 分发饼干

原来if后面跟着的判断语句先后顺序也会影响代码运行情况。
所以要把amount >= 0写在s[amount] >= g[i]前面。
一开始想到的是双重for循环,但那样子时间复杂度很高,看了题解发现了如下写法:

class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        g.sort()  # 将孩子的贪心因子排序
        s.sort()  # 将饼干的尺寸排序
        amount = len(s) - 1  # 饼干数组的下标,从最后一个饼干开始
        count = 0  # 满足孩子的数量
        for i in range(len(g) - 1, -1, -1):  # 遍历胃口,从最后一个孩子开始
            if amount >= 0 and s[amount] >= g[i]:  # 遍历饼干
                count += 1
                amount -= 1
        return count
class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        g.sort()  # 将孩子的贪心因子排序
        s.sort()  # 将饼干的尺寸排序
        amount = 0
        for i in range(len(s)):  # 遍历饼干
            if amount < len(g) and g[amount] <= s[i]:  # 如果当前孩子的贪心因子小于等于当前饼干尺寸
                amount += 1  # 满足一个孩子,指向下一个孩子
        return amount  # 返回满足的孩子数目

提不起精神,做一道题算了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值