【LeetCode 刷题】贪心算法(1)-基础

此博客为《代码随想录》二叉树章节的学习笔记,主要内容为贪心算法基础的相关题目解析。

文章目录

455.分发饼干

题目链接

python 复制代码
class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        g.sort()
        s.sort()
        i = 0
        for x in s:
            if i < len(g) and g[i] <= x:
                i += 1
        return i
  • 饼干和胃口数组都从小到大排序,最小的饼干应该给当前满足的胃口最小的孩子,如果不给则会浪费分发机会,无法取得最优解
  • 指针 i 标识当前满足到第 i 个孩子;完整遍历饼干列表,按照孩子胃口从小到达依次尝试去满足,最后直接返回 i 即为已经满足的孩子数量

1005.K次取反后最大化的数组和

题目链接

python 复制代码
class Solution:
    def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:
        nums.sort()
        min_num, res = +inf, 0
        for num in nums:
            min_num = min(min_num, abs(num))
            if num < 0 and k > 0:
                res -= num
                k -= 1
            else:
                res += num
        if k and k % 2 != 0:
            return res - 2 * min_num
        else:
            return res
  • 首先把负数从小到大仅可能反转为正数,如果反转所有负数后 k > 0,则后序反转只针对最小的元素
  • 在遍历过程中反转负数同时记录最小元素,如果遍历结束后 k > 0k 为奇数,则把最小的元素反转,反之则直接返回答案

860.柠檬水找零

题目链接

python 复制代码
class Solution:
    def lemonadeChange(self, bills: List[int]) -> bool:
        five = ten = 0
        for b in bills:
            if b == 5:
                five += 1
            elif b == 10:
                five -= 1
                ten += 1
            else:
                if ten:
                    ten -= 1
                    five -= 1
                else:
                    five -= 3
            if five < 0:
                return False
        return True
  • 分类讨论,贪心准则为优先使用十元找零,之后再使用五元
相关推荐
万添裁38 分钟前
huawei 机考
算法·华为·深度优先
m0_748554818 小时前
golang如何实现用户订阅偏好管理_golang用户订阅偏好管理实现总结
jvm·数据库·python
IronMurphy8 小时前
【算法四十三】279. 完全平方数
算法
墨染天姬8 小时前
【AI】Hermes的GEPA算法
人工智能·算法
papership8 小时前
【入门级-数据结构-3、特殊树:完全二叉树的数组表示法】
数据结构·算法·链表
smj2302_796826528 小时前
解决leetcode第3911题.移除子数组元素后第k小偶数
数据结构·python·算法·leetcode
阿正呀9 小时前
Redis怎样实现本地缓存的高效失效通知
jvm·数据库·python
Beginner x_u9 小时前
链表专题:JS 实现原理与高频算法题总结
javascript·算法·链表
2501_901200539 小时前
mysql如何设置InnoDB引擎参数_优化innodb_buffer_pool
jvm·数据库·python
_.Switch9 小时前
东方财富股票数据JS逆向:secids字段和AES加密实战
开发语言·前端·javascript·网络·爬虫·python·ecmascript