Python贪心算法Greedy Algorithm解决案例小结

 更新时间:2023年06月16日 15:18:40   作者:ShowMeCoding  
这篇文章主要为大家介绍了Python贪心算法Greedy Algorithm解决案例小结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

贪心算法

在每一次做决策时,保证当下的决策是最优的,从而使得最后的结果是最优的。

分发饼干

455. 分发饼干

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

# 最好的选择是不要浪费饼干
class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        # 先对胃口值和饼干尺寸排序
        g.sort()
        s.sort()
        g_l = len(g)
        g_index = 0
        s_l = len(s)
        s_index = 0
        # 计数
        count = 0
        # 终止条件:孩子数 和 饼干数是否在条件内
        while g_index < g_l and s_index < s_l:
            # 胃口小于饼干
            if g[g_index] <= s[s_index]:
                # 饼干被消耗
                count += 1
                g_index += 1
                s_index += 1
            # 胃口大于饼干
            else:
                # 寻求更多的饼干满足胃口
                s_index += 1
        return count

无重叠区间

435. 无重叠区间

给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。

输入: intervals = [[1,2],[2,3],[3,4],[1,3]]
输出: 1

解释: 移除 [1,3] 后,剩下的区间没有重叠。

class Solution:
    def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
        # 判断是否为空
        if not intervals:
            return 0
        # 对end值进行升序排序
        intervals.sort(key = lambda x: x[1])
        # 维护一个最小值
        end_pos = intervals[0][1]
        # 只有单个区间时无重叠!!!因此定义为1
        count = 1
        # 终止条件
        for i in range(1, len(intervals)):
            # 判断是否连续
            if end_pos <= intervals[i][0]:
                count += 1
                end_pos = intervals[i][1]
        return len(intervals) - count

二维数组排序的方法:intervals.sort(key = lambda x: x[1])
思路转换:求最小移除数组,意味着求最大连续数组

柠檬水找零

860. 柠檬水找零

输入:bills = [5,5,5,10,20]
输出:true

解释:

前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。

第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。

第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。

由于所有客户都得到了正确的找零,所以我们输出 true。

class Solution:
    def lemonadeChange(self, bills: List[int]) -> bool:
        five, ten, twenty = 0, 0, 0
        for bill in bills:
            if bill == 5:
                five += 1
            if bill == 10:
                # 是否可以找回
                if five <= 0:
                    return False
                # 收下 10 元
                ten += 1
                # 找回 5 元
                five -= 1
            if bill == 20:
                # 是否可以找回一张5元和一张10元
                if five > 0 and ten > 0:
                    five -= 1
                    ten -= 1
                    twenty += 1
                # 是否可以找回三张 5 元
                elif five >= 3:
                    five -= 3
                    twenty += 1
                else:
                    return False
        return True

以上就是Python贪心算法Greedy Algorithm解决案例小结的详细内容,更多关于Python贪心算法的资料请关注脚本之家其它相关文章!

相关文章

  • Python Streamlit制作交互式可视化网页应用实例

    Python Streamlit制作交互式可视化网页应用实例

    这篇文章主要为大家介绍了Python Streamlit制作交互式可视化网页应用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • python中ImageTk.PhotoImage()不显示图片却不报错问题解决

    python中ImageTk.PhotoImage()不显示图片却不报错问题解决

    这篇文章主要给大家介绍了关于在python中ImageTk.PhotoImage()不显示图片却不报错问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • python 写入csv乱码问题解决方法

    python 写入csv乱码问题解决方法

    这篇文章主要介绍了python 写入csv乱码问题解决方法的相关资料,需要的朋友可以参考下
    2016-10-10
  • python 基于wx实现音乐播放

    python 基于wx实现音乐播放

    这篇文章主要介绍了python 基于wx实现音乐播放的示例代码,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-11-11
  • python矩阵列的实现示例

    python矩阵列的实现示例

    在Python和NumPy库的帮助下,矩阵列可以很容易地进行各种操作,本文主要介绍了python矩阵列的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • tensorflow 加载部分变量的实例讲解

    tensorflow 加载部分变量的实例讲解

    今天小编就为大家分享一篇tensorflow 加载部分变量的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python机器学习使数据更鲜活的可视化工具Pandas_Alive

    python机器学习使数据更鲜活的可视化工具Pandas_Alive

    今天我分享大家一款非常棒的动画可视化工具:Pandas_Alive,它以 matplotlib 绘图为后端,不仅可以创建出令人惊叹的动画可视化,而且使用方法非常简单。本文详情如下
    2021-11-11
  • Python基础学习之深浅拷贝问题及递归函数练习

    Python基础学习之深浅拷贝问题及递归函数练习

    在实际工作中,经常涉及到数据的传递。这篇文章主要为大家介绍了Python的一些基础学习:深拷贝与浅拷贝问题、递归函数的练习,需要的朋友可以参考一下
    2021-12-12
  • YOLOv5车牌识别实战教程(八)Web应用与API开发

    YOLOv5车牌识别实战教程(八)Web应用与API开发

    这篇文章主要介绍了YOLOv5车牌识别实战教程(八)Web应用与API开发,在这个教程中,我们将一步步教你如何使用YOLOv5进行车牌识别,帮助你快速掌握YOLOv5车牌识别技能,需要的朋友可以参考下
    2023-04-04
  • python 读写文件包含多种编码格式的解决方式

    python 读写文件包含多种编码格式的解决方式

    今天小编就为大家分享一篇python 读写文件包含多种编码格式的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论