【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
  • 分类讨论,贪心准则为优先使用十元找零,之后再使用五元
相关推荐
Robot侠2 小时前
极简LLM入门指南4
大数据·python·llm·prompt·提示工程
hh随便起个名2 小时前
力扣二叉树的三种遍历
javascript·数据结构·算法·leetcode
等....3 小时前
Miniconda使用
开发语言·python
Java&Develop3 小时前
Aes加密 GCM java
java·开发语言·python
Dingdangcat864 小时前
城市交通多目标检测系统:YOLO11-MAN-FasterCGLU算法优化与实战应用_3
算法·目标检测·目标跟踪
tang&4 小时前
滑动窗口:双指针的优雅舞步,征服连续区间问题的利器
数据结构·算法·哈希算法·滑动窗口
拼命鼠鼠4 小时前
【算法】矩阵链乘法的动态规划算法
算法·矩阵·动态规划
LYFlied5 小时前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展
爱笑的眼睛115 小时前
超越MSE与交叉熵:深度解析损失函数的动态本质与高阶设计
java·人工智能·python·ai
式5165 小时前
线性代数(八)非齐次方程组的解的结构
线性代数·算法·机器学习