#算法记录 | Day33 贪心算法

news2025/2/27 17:12:39

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

class Solution:
    def largestSumAfterKNegations(self, A: List[int], K: int) -> int:
        A = sorted(A, key=abs, reverse=True) # 将A按绝对值从大到小排列
        for i in range(len(A)):
            if K > 0 and A[i] < 0:
                A[i] *= -1
                K -= 1
        if K > 0:
            A[-1] *= (-1)**K #取A最后一个数只需要写-1
        return sum(A)

134. 加油站

贪心算法

  • 如果加油站提供的油总和大于等于消耗的汽油量,则必定可以绕环路行驶一周
  • 假设先不考虑油量为负的情况,我们从「第 0 个加油站」出发,环行一周。记录下汽油量 gas[i] 和 cost[i] 差值总和 sum_diff,同时记录下油箱剩余油量的最小值 min_sum。
  • 如果差值总和 sum_diff < 0,则无论如何都不能环行一周。油不够啊,亲!!
  • 如果 min_sum ≥ 0,则行驶过程中油箱始终有油,则可以从 0 个加油站出发环行一周。
  • 如果 min_sum < 0,则说明行驶过程中油箱油不够了,那么考虑更换开始的起点。
    • 从右至左遍历,计算汽油量 gas[i] 和 cost[i] 差值,看哪个加油站能将 min_sum 填平。如果最终达到 min_sum ≥ 0,则说明从该点开始出发,油箱中的油始终不为空,则返回该点下标。
    • 如果找不到最返回 -1
class Solution:
    def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
        sum_diff, min_sum = 0, float('inf')
        for i in range(len(gas)):
            sum_diff += gas[i] - cost[i]
            min_sum = min(min_sum, sum_diff)

        if sum_diff < 0:
            return -1

        if min_sum >= 0:
            return 0

        for i in range(len(gas)-1, -1, -1):
            min_sum += gas[i] - cost[i]
            if min_sum >= 0:
                return i
        return -1

135. 分发糖果

思路:

这道题目一定是要确定一边之后,再确定另一边,例如比较每一个孩子的左边,然后再比较右边,如果两边一起考虑一定会顾此失彼

先确定右边评分大于左边的情况(也就是从前向后遍历)

135.分发糖果

再确定左孩子大于右孩子的情况(从后向前遍历),确定左孩子大于右孩子的情况一定要从后向前遍历!

img

class Solution:
    def candy(self, ratings: List[int]) -> int:
        size = len(ratings)
        sweets = [1 for _ in range(size)]

        for i in range(1, size):
            if ratings[i] > ratings[i - 1]:
                sweets[i] = sweets[i - 1] + 1

        for i in range(size - 2, -1, -1):
            if ratings[i] > ratings[i + 1]:
                sweets[i] = max(sweets[i], sweets[i + 1] + 1)

        res = sum(sweets)
        return res

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

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

相关文章

最基础的electron打包运行配置,以及Electron Builder 和 Electron Forge两者差异

node版本 v16.19.0 开发之前请务必去官网查看node所支持的版本&#xff0c;不然安装会报错 推荐使用 yarn 包管理 引入electron依赖 yarn add electron22.3.6 -D yarn add electron-builder -D创建electron配置文件 我这边为了模块化开发&#xff0c;将electron相关文件放…

Chapter3: Design Creation with RTL(ug949)

&#xff08;3.5&#xff09;Clock Domain Crossing 设计中的跨时钟域电路直接影响设计的可靠性。您可以设计自己的电路&#xff0c;但Vivado design Suite必须识别电路&#xff0c;并且必须正确应用ASYNC_REG属性。Xilinx提供XPM以确保正确的电路设计&#xff0c;包括…

【c/c++编译工具】——Cmake的学习

简介 目录 简介 1. Cmake的基本语法 2. 常用指令 3. CMake常用的变量 4. CMake编译工程 5. 构建方式 6. 实战---CMake代码实战 CMake是一个跨平台的安装编译工具&#xff0c;可以用简单的语句来描述所有平台的安装(编译过程)。CMake可以说已经成为大部分C开源项目标配…

将自己的服务注册成Windows服务

winsw下载地址 https://github.com/winsw/winsw/releases 如何注册服务 将WinSW.exe复制到自定义的目录同目录下创建projectName.xml。特别注意&#xff0c;xml和exe必须同名配置 xml文件 xml配置信息如下 <service><id>wjb-member</id><name>wjb-me…

15-721 Chapter7 索引

锁的分类 锁占用少量内存&#xff0c;实际上在不竞争的情况下性能不错. 第一个就是靠test_and_set实现的自旋锁&#xff0c;高效&#xff0c;因为在用户态&#xff0c;但是却不可扩展&#xff0c;对cache&#xff0c;os都不友好 第二个是mutex&#xff0c;实际上两个部分组成…

浮空,定位

浮动原理&#xff1a; 清除浮动 高度塌陷是怎么造成的&#xff0c;浮动元素脱离当前文档流&#xff0c;然后无法撑起父容器导致了高度塌陷&#xff0c;因为父容器没有设置高度 解决方法&#xff1a; 1.将父元素变成bfc元素 2.父元素浮动 3.清除浮动&#xff1a; 通过给父元…

小伙被内卷逼成扫地僧,把牛客网所有面试题整理成25W字面试手册

很多工作过了 5 年之后的工程师&#xff0c;都表示写不动 CRUD 代码了&#xff0c;都会考虑转架构师&#xff0c;但是一想到面试&#xff0c;可能心里就会一紧。 一般面试大厂架构师的岗位至少需要 3 轮技术面试&#xff0c;我咨询了一下阿里的大佬&#xff0c;了解到每一轮的…

数字化时代,如何建造会“运转”的数仓

在建设数仓之前需要根据数据基础和业务需求来决定要建设什么标准的数仓。 常见数仓问题 1、公共底层加工逻辑分散&#xff1a;对于来自多个数据源&#xff0c;但需要使用相同过滤和解析方式公共底层数仓&#xff0c;其过滤和解析代码在每个任务或配置中直接静态复制&#xff…

【系统集成项目管理工程师】项目范围管理

&#x1f4a5;十大知识领域&#xff1a;项目范围管理 项目范围管理包括以下 6 个过程: 编制范围管理计划过程收集需求过程定义范围过程创建工作分解结构过程确认范围过程范围控制过程 一、编制范围管理计划过程 对如何定义、确认和控制项目范围的过程进行描述 1、输出&#xff…

ch02-PyTorch数据预处理

ch02-PyTorch数据预处理0.引言1.数据读取机制 Dataloader 与 Dataset1.1.纸币二分类1.2.DataSet与DataLoader1.2.1.torch.utils.data.DataLoader&#xff1a;构建可迭代的数据装载器1.2.2.torch.utils.data.Dataset&#xff1a;Dataset抽象类1.2.3.以人民币分类为例2.数据预处理…

【Python】如何正确执行python装饰器?

文章目录前言一、错误的做法是什么&#xff1f;二、正确的方法总结前言 说到Python装饰器的执行顺序&#xff0c;有很多半吊子张口就来&#xff1a; 靠近函数名的装饰器先执行&#xff0c;远离函数名的装饰器后执行。 这种说法是不准确的。但是这些半吊子多半还会不服&#…

海明码的计算和检错纠错

海明码 1.学习前提 学习海明码之前&#xff0c;我们要约定3个原则&#xff1a; 海明码只能检测出2位错&#xff0c;纠1位错(因此不要问如果3位错怎么办等幼稚问题)。海明码默认进行偶校验(除非特殊说明使用奇校验)。海明码是一串由0和1组成的序列(除01外没有其他的值&#x…

ASEMI代理AD8606ACBZ-REEL7原装ADI车规级AD8606ACBZ-REEL7

编辑&#xff1a;ll ASEMI代理AD8606ACBZ-REEL7原装ADI车规级AD8606ACBZ-REEL7 型号&#xff1a;AD8606ACBZ-REEL7 品牌&#xff1a;ADI/亚德诺 封装&#xff1a;WLCSP-8 批号&#xff1a;2023 引脚数量&#xff1a;8 安装类型&#xff1a;表面贴装型 AD8606ACBZ-REEL7…

Serverless 冷启动:如何让函数计算更快更强?

问题背景 Serverless 计算也称服务器无感知计算或函数计算&#xff0c;是近年来一种新兴的云计算编程模式。其致力于大幅简化云业务开发流程&#xff0c;使得应用开发者从繁杂的服务器运维工作中解放出来&#xff08;例如自动伸缩、日志和监控等&#xff09;。借助 Serverless…

APT攻击及密码学

目录标题什么是APT攻击&#xff1f;APT攻击过程APT防御技术APT防御过程沙箱处理流程密码学什么是对称加密&#xff1f;什么是非对称加密&#xff1f;SSL工作过程什么是APT攻击&#xff1f; APT攻击即高级可持续威胁攻击&#xff0c;也称为定向威胁攻击&#xff0c;指某组织对特…

fastCGI快速上手

fastCGI OVERVIEWfastCGI一、CGI二、fastCGI三、fastCGI使用1.fastCGI和spawn-fcgi安装2.nginx fastcgi&#xff08;1&#xff09;nginx的数据转发&#xff08;2&#xff09;spawn-fcgi启动&#xff08;3&#xff09;fastCGI进程处理3.fastCGI总结四、其他1.fastCGI环境变量2.…

【图像分割】LabelMe基本使用/标注标签格式转换及可视化

前言 之前一直在做目标检测的相关内容&#xff0c;使用LabelImg标注检测数据轻车熟路。不过最近尝试探索一下图像分割场景&#xff0c;需要用到LabelMe标注用于分割的数据标签&#xff0c;本文进行过程记录。 图像分割数据标签示例 以道路分割为例&#xff0c;下图是deepglo…

基于MVC+SSH的文章发布系统源码数据库毕业论文

目 录 摘要 1 Abstract 2 1 绪论 1.1 课题背景 1.2 研究现状及发展趋势 1.3 课题意义与目的 1.4 研究内容 1.5 论文组织 2 开发工具和技术介绍 2.1 开发工具 2.1.1 Myeclipse简介 2.1.2 MySQL简介 2.1.3 Tomcat简介 2.2 开发技术 2.…

【LInux】MySQL高可用之主从复制

一、Mysql主从架构技术说明 Mysql内建的复制功能是构建大型&#xff0c;高性能应用程序的基础。将Mysql的数据分布到 多个系统上去&#xff0c;这种分布的机制&#xff0c;是通过将Mysql的某一台主机&#xff08;Master&#xff09;的数据复 制到其它主&#xff08;slaves&…

音频模块的介绍

一、术语总结 1.HIFI 级   “HIFI”一词通常指高保真音频&#xff08;High-Fidelity Audio&#xff09;&#xff0c;是指尽可能保持音频信号的原始质量&#xff0c;让听众感受到最真实的音乐表现。因此&#xff0c;“HIFI级”通常指具有高保真音频性能的产品或设备&#xff…