算法记录 | Day35 贪心算法

news2024/9/23 19:26:59

860.柠檬水找零

思路:

只需要维护三种金额的数量,5,10和20。

有如下三种情况:

  • 情况一:账单是5,直接收下。
  • 情况二:账单是10,消耗一个5,增加一个10
  • 情况三:账单是20,优先消耗一个10和一个5,如果不够,再消耗三个5

账单是20的情况,优先消耗一个10和一个5

因为美元10只能给账单20找零,而美元5可以给账单10和账单20找零,美元5更万能!

所以局部最优:遇到账单20,优先消耗美元10,完成本次找零。全局最优:完成全部账单的找零。

class Solution:
    def lemonadeChange(self, bills: List[int]) -> bool:
        five = 0 
        ten = 0 
        twenty = 0
        for bill in bills:
            if bill == 5: five += 1
            if bill == 10: 
                if five < 0: return False
                ten += 1
                five -= 1
            if bill == 20:
                if ten > 0 and five > 0:
                    twenty += 1
                    ten -= 1
                    five -=1
                elif five >= 3:
                    twenty += 1
                    five -= 3
                else:
                    return False
        return True

406.根据身高重建队列

思路:

1.可以先确定身高维度。将数组按身高从高到低进行排序,身高相同的则按照 k值升序排列。这样排序之后可以确定目前对于第 j 个人来说,前面的 j - 1 个人肯定比他都高。

2.建立一个包含 n 个位置的空队列 queue,按照上边排好的顺序遍历,依次将其插入到第 kj位置上。最后返回新的队列。

406.根据身高重建队列

class Solution:
    def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:
        people.sort(key = lambda x: (-x[0],x[1] ))
        que = []
        for p in people:
            que.insert(p[1],p)
        return que

452. 用最少数量的箭引爆气球

思路:

按开始坐标升序排序需要考虑一种情况:有交集关系的区间中,有的区间结束位置比较早。比如 [0, 6] [1, 2] [4, 5]

,按照开始坐标升序排序的话,如下:

[0 . . . . . 6]
  [1 2]
        [4,5]

第一箭的位置需要进行迭代判断,取区间 [0, 6] [1, 2]中结束位置最小的位置,即arrow_pos = min(points[i][1], arrow_pos),然后再判断接下来的区间是否能够引爆。

而按照结束坐标排序的话,箭的位置一开始就确定了,不需要再改变和判断箭的位置,直接判断区间即可。

按开始位置排序

class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        if not points:return False
        points.sort(key=lambda x:x[0])
        arow_pos = points[0][1]
        count = 1
        for i in range(len(points)):
            if arow_pos < points[i][0]:
                count += 1
                arow_pos = points[i][1]
            else:
                arow_pos = min(arow_pos, points[i][1])
        return count

按结束位置排序

class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        if not points:return False
        points.sort(key=lambda x:x[1])
        arow_pos = points[0][1]
        count = 1
        for i in range(len(points)):
            if arow_pos < points[i][0]:
                count += 1
                arow_pos = points[i][1]
        return count

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九、Locust运行与配置

1. 配置 1.1 环境变量 也可以通过环境变量设置选项。它们通常与命令行参数相同&#xff0c;但大写并带有前缀LOCUST_&#xff1a; 在 Linux/macOS 上&#xff1a; $ LOCUST_LOCUSTFILEcustom_locustfile.py locust在 Windows 上&#xff1a; > set LOCUST_LOCUSTFILEcu…

MySQL的安装与卸载(Centos7.9环境下,全篇图文手把手安装教程)

前言 在安装MySQL之前&#xff0c;我们先来看看MySQL如何卸载。如果从未安装过MySQL的任何版本&#xff0c;可以直接跳过这部分。 如果已经安装过MySQL&#xff0c;一定要确保自己的环境中的MySQL相关文件删除干净&#xff0c;否则重新安装时可能会出现一些错误 tips&#xf…

问界M9全剧透:华为的「科技豪华」样板间

作者 | 德新 编辑 | 王博 今天在nova 11的发布会上&#xff0c;曝了一个意外——问界M9提前剧透。实际上这车要今年四季度才上市。「本来没打算这么早发出来&#xff0c;前阵子网上有一个很老的设计图在传&#xff08;实在太丑&#xff09;。没办法&#xff0c;干脆先讲讲」…

DriveGPT、车企订单背后,为什么毫末每年都能搞出新东西?

作者 | 祥威 编辑 | 德新 4月11日&#xff0c;毫末智行正式发布自动驾驶生成式大模型 DriveGPT&#xff0c;中文名 雪湖海若&#xff0c;可以提升自动驾驶认知能力&#xff0c;最终提升规控效率。 雪湖海若的核心&#xff0c;是将各种驾驶场景作为Token输入到模型中&…

《Netty》从零开始学netty源码(三十九)之PoolSubPage的内存分配

目录 PoolSubPage.allocategetNextAvail方法toHandle方法removeFromPool方法 PoolSubPage.allocate 上一篇我们介绍了PoolSubPage的简单知识&#xff0c;当我们需要PoolSubPage的内存时可调用allocate方法查找可分配二进制的位置&#xff0c;具体的源码过程如下&#xff1a; …

ctfshow web入门命令执行web74-118

1.web74 还是先扫目录 payload: c$anew DirectoryIterator(glob:///*);foreach($a as $f){echo($f->__toString()." ");}exit(0); #扫描根目录有什么文件 c$anew DirectoryIterator(glob:///*);foreach($a as $f){echo($f->getFilename()." ");} …

N32G430学习笔记20--- spi外设单工模式下spi1中断发送和spi2中断数据接收

基本知识 spi主模式下使用硬件NSS(3个条件缺一不可): 设置硬件NSS模式设置NSS电平为低电平使能NSS输出spi主模式下使用软件NSS: 设置软件NSS模式 使能NSS输出 SPI_SS_Output_Enable(SPI1);//NSS 使能 SPI接线方式(MISO 和MOSI反着接) SPI1->SLCK=PB3 <–> SPI2-…

在SPRO为定制表创建节点

确定透明表已创建&#xff0c;允许维护&#xff0c;并且生成维护视图。保证SM30可以正常维护。 2.在已有的节点增加还是新增&#xff0c;如果在以有的节点增加&#xff0c;需要查看已有节点的Enhancement ID 。 查看方法具体请点击。 举个例子&#xff1a;我们想在Z-business C…

每日学术速递4.17

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.DreamPose: Fashion Image-to-Video Synthesis via Stable Diffusion 标题&#xff1a;DreamPose&#xff1a;通过稳定扩散实现时尚图像到视频合成 作者&#xff1a;Johanna Karr…

无聊写个 chatgpt 玩玩!这不得试一试 openai 的聊天和绘画功能

chatgpt 最近很火。使用 chatgpt 问一些问题还是很有用的。比如面试题&#xff0c;面试题的答案。简直不要太爽。 不过闲来无事&#xff0c;也使用 openai 提供的api &#xff0c;写了几个小页面&#xff0c;可以进行聊天&#xff0c;和绘画。 项目放在 github 上了&#xff…

cmake和cmake install学习

cmake 设置cmake的C/C编译标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_C_STANDARD 11)add_library生成的默认是静态库还是动态库 https://blog.csdn.net/HandsomeHong/article/details/122401900 add_library()命令生成的默认库类型取决于第二个参数。如果第二个参数是STATI…

python-day3

第003天 函数和模块的使用 定义函数 在python中可以使用def关键字来定义函数&#xff0c;和变量一样每个函数也有一个名字&#xff0c;而且命名规则和变量的命名规则是一致的。在函数名后面的圆括号中可以放置传递给函数的参数&#xff0c;程序中函数的参数就是相当于数学上…

企业级信息系统开发学习笔记05 初探Spring AOP

文章目录 一、学习目标二、Spring AOP&#xff08;一&#xff09;AOP基本含义&#xff08;二&#xff09;AOP基本作用&#xff08;三&#xff09;AOP和OOP对比&#xff08;四&#xff09;AOP使用方式&#xff08;五&#xff09;AOP基本概念 三、采用配置方法使用AOP&#xff08…

STM32实验-高级定时器输出指定个数PWM

STM32F103ZET6中有TIM1,TIM8两个高级定时器&#xff0c;每一定时器都有 1、一个16位向上、向下、向上/下自动装载计数器 2、一个16位预分频器和四个独立从输入输出通道 3、每一个通道都可用于输入捕获、输出比较、PWM和单脉冲模式&#xff08;除了基本定时器&#xff0c;高级定…

Cesium-源码修改-gltf增加纹理贴图改变3dtiles外观

一、需求 Cesium支持加载gltf和3dtiles等三维数据模型&#xff0c;实现了很好的封装&#xff0c;往往只需要给一个uri就能加载模型文件&#xff0c;并实现贴图渲染等。但是好的封装带来的问题是如果开发者想要自定义贴图&#xff0c;那该怎么办&#xff1f;不得不从源码入手。 …

条码控件Aspose.BarCode入门教程(6):如何在C# 中生成GS1-128 条码

Aspose.BarCode for .NET 是一个功能强大的API&#xff0c;可以从任意角度生成和识别多种图像类型的一维和二维条形码。开发人员可以轻松添加条形码生成和识别功能&#xff0c;以及在.NET应用程序中将生成的条形码导出为高质量的图像格式。 Aspose API支持流行文件格式处理&am…

三、Golang环境搭建及打包和工具链

一、环境搭建 从https://golang.google.cn/dl/下载安装即可 新建GO_HOME 系统环境变量&#xff0c;指向go的安装目录 在终端输入go dev即可测试有无安装成功 二、包 所有Go程序的程序都会组织成若干组文件&#xff0c;每组文件被称为一个包。每个包的代码都可以作为很小的复用…

webpack 5 实战(1)

一、为什么使用webpack 个人将前端开发分为三个阶段&#xff1a; 1.1 Web1.0 Web1.0前端主要工作&#xff1a; 前端主要编写静态页面对于JavaScript的使用&#xff0c;主要是进行表单验证和动画效果制作 1.2 Web2.0之AJAX 伴随着AJAX的诞生&#xff0c;前端的工作模式也发…

什么牌子的蓝牙耳机音质最好?盘点2023音质最好的蓝牙耳机

近几年&#xff0c;蓝牙耳机在日常生活中的出现频率越来越高&#xff0c;不管是运动、听歌、追剧、玩游戏等等都能看到蓝牙耳机的身影。接下来&#xff0c;我来给大家盘点几款音质好的蓝牙耳机&#xff0c;感兴趣的朋友可以了解一下。 一、南卡小音舱Lite2蓝牙耳机 参考价&…

使用 WSL 在 Windows 上安装 Linux提示无法解析服务器的名称或地址及0x80370114问题解决

开发人员可以通过WSL在windows电脑上安装Linux发行版&#xff0c;并可以直接在电脑上使用Linux应用程序、实用程序和Bash命令行工具等。 先决条件 必须运行 Windows 10 版本 2004 及更高版本&#xff08;内部版本 19041 及更高版本&#xff09;或 Windows 11 才能使用以下命令…