代码随想录算法训练营第三十四天 | 贪心算法part03

题目:

1005.K次取反后最大化的数组和
134. 加油站
135. 分发糖果


学习内容:

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

这道题要分为两步,首先对数组进行排序,然后对其中的负数取反。如果这时候k还没有消耗完,就对处理后的数组再排序,如果k是偶数,那正常返回数组和,如果k是奇数,那么返回max-num[0]-num[0]。

class Solution {public int largestSumAfterKNegations(int[] nums, int k) {Arrays.sort(nums);for (int i = 0; i < nums.length; i++) {if (nums[i] < 0 && k > 0) {nums[i] = -nums[i];k--;}}Arrays.sort(nums);int max = 0;for (int i = 0; i < nums.length; i++) {max += nums[i];}if (k % 2 == 0) {return max;}return max - nums[0] - nums[0];}
}

134. 加油站

class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int curSum = 0; // 当前剩余油量int totalSum = 0; // 总油量int start = 0; // 出发加油站索引for (int i = 0; i < gas.length; i++) {curSum += gas[i] - cost[i];totalSum += gas[i] - cost[i];if (curSum < 0) {start = i + 1;curSum = 0;}}if (totalSum < 0) return -1;return start;}
}

135. 分发糖果

这道题由于要考虑相邻的孩子,但是同时考虑左右容易造成混乱。因此,我们分为两步,第一步是从前往后遍历,只考虑当前孩子和左边孩子的关系,如果当前元素孩子大,就在左孩子的糖基础上加1。第二步是从后往前遍历,只考虑当前孩子和右边孩子的关系。

class Solution {public int candy(int[] ratings) {int len = ratings.length;int[] candyVec = new int[len];candyVec[0] = 1;for (int i = 1; i < len; i++) {if (ratings[i] > ratings[i - 1]) {candyVec[i] = candyVec[i - 1] + 1;} else {candyVec[i] = 1;}}for (int i = len - 2; i >= 0; i--) {if (ratings[i] > ratings[i + 1]) {candyVec[i] = Math.max(candyVec[i], candyVec[i + 1] + 1);}}int sum = 0;for (int i = 0; i < len; i++) {sum += candyVec[i];}return sum;}
}

学习时间:

2024.4.15

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

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

相关文章

【开源鸿蒙】调试OpenHarmony轻量系统QEMU RISC-V版本

【开源鸿蒙】调试OpenHarmony轻量系统QEMU RISC-V版本 一、准备工作1.1 编译OpenHarmony源码1.2 确认OHOS_Image已生成1.3 确认OHOS_Image文件是否有调试信息1.4 检查config.gni文件是否有-g编译选项 二、GDB调试2.1 启动QEMU模拟器2.2 启动GDB调试器2.3 连接QEMU模拟器2.4 使用…

性能优化-02

uptime 依次显示当前时间、系统运行时间以及正在登录用户数&#xff0c;最后三个数字依次则是过去1分钟、5 分钟、15 分钟的平均负载(Load Average) 平均负载是指单位时间内&#xff0c;系统处于可运行状态和不可中断状态的平均进程数&#xff0c;也就是平均活跃进程数&#xf…

Vue3(四):Pinia

一、Pinia介绍 Pinia是一个专门为Vue.js设计的状态管理库&#xff0c;它提供了一种简单和直观的方式来管理应用程序的状态。在使用Pinia时&#xff0c;可以轻松地创建定义状态的存储&#xff0c;然后将其与Vue组件绑定&#xff0c;使它们能够使用该状态。和上一个博客提到的Vu…

【小程序】生成短信中可点击的链接

文章目录 前言一、如何生成链接二、仔细拜读小程序开发文档文档说明1文档说明2 总结 前言 由于线上运营需求&#xff0c;需要给用户发送炮轰短信&#xff0c;用户通过短信点击链接直接跳转进入小程序 一、如何生成链接 先是找了一些三方的&#xff0c;生成的倒是快速&#xf…

TVS参数、选型、对比

https://www.kdocs.cn/l/cpz6hHr7GRlh VRWM &#xff08;Reverse working voltage&#xff09; TVS 的最高工作电压&#xff0c;可连续施加不引起 TVS 劣化或损坏的最高工作峰值电压或直流峰值电压。 对于交流电压&#xff0c;用最高工作电压有效值表示&#xff0c;在VRWM 下&a…

科技助力上亿用户隐私安全保护,合合信息两款产品再获CCIA PIA星级标识

随着互联网技术的飞速发展&#xff0c;个人信息的收集、存储、使用和传输变得日益频繁&#xff0c;其泄露和滥用的风险也随之增加&#xff0c;个人信息保护已成为社会共同关注的热点议题。近期&#xff0c;“中国网络安全产业联盟&#xff08;CCIA&#xff09;数据安全工作委员…

【刷题笔记】第六天

文章目录 [Power Calculus](https://vjudge.net/problem/POJ-3134)题目描述分析 [706. 设计哈希映射](https://leetcode.cn/problems/design-hashmap/)方法一&#xff1a;纯数组方法二&#xff1a;数组加链表 今天再练一道迭代搜索的题 力扣每日一题 Power Calculus 题目描述…

【Windows】SecureCRT v9.2.3永久使用教程亲测可用

​ 软件介绍 SecureCRT 是一款常用的 SSH&#xff08;安全外壳协议&#xff09;和 Telnet 客户端软件&#xff0c;主要用于远程服务器管理和网络设备配置。它具有以下主要功能&#xff1a; 1.安全连接&#xff1a;SecureCRT 提供了强大的加密算法&#xff0c;保障用户与服务…

Java面试题:什么是Java 15中的密封类以及其限制?还有哪些其他特性用于限制类继承的机制吗?

在Java 15中&#xff0c;密封类&#xff08;Sealed Classes&#xff09;是一种新的特性&#xff0c;用于限制类的继承。通过密封类&#xff0c;开发者可以明确指定哪些类可以继承自该类&#xff0c;从而提供了一种更精细的控制继承机制的方式。 密封类的定义非常简单&#xff…

建立时间/保持时间为负是什么情况

目录 建立时间为负保持时间为负参考 在说明建立时间和保持时间为何为负的情况下&#xff0c;首先可以看看建立时间Tsu和保持时间Th的由来&#xff0c;可参考如下两篇文章&#xff1a; 建立时间和保持时间理解_为什么要满足建立时间和保持时间-CSDN博客 ic基础|时序篇&#xff…

GPT的使用

个人笔记&#xff08;整理不易&#xff0c;有帮助点个赞&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔&#xff1a;工作总结随笔_8、以前工作中都接触过哪些类型的测试文档-CSDN博客 网站sms-activate.or…

Linux知识点(3)

文章目录 11. 进程间通信11.1 管道11.1.0 |11.1.1 匿名管道11.1.2 命名管道11.1.3 用匿名管道形成进程池 11.2 system V共享内存11.2.1 system V函数11.2.2 system 命令 11.3 system V消息队列11.4 system V 信号量 12. 进程信号12.1 前台进程和后台进程12.1.1 jobs12.1.2 fg &…

哈尔滨等保测评之什么是linux及快捷方式,看完这篇你还有什么不懂得嘛?

Linux 的学习对于一个程序员的重要性是不言而喻的。前端开发相比后端开发&#xff0c;接触 Linux 机会相对较少&#xff0c;因此往往容易忽视它。但是学好它却是程序员必备修养之一。 什么是Linux Linux 系统内核与 Linux 发行套件的区别 Linux 系统内核指的是由 Linus Torva…

计算机网络(五)传输层

传输层 从通信和信息处理的角度看&#xff0c;传输层向它上面的应用层提供通信服务&#xff0c;属于面向通信部分的最高层&#xff0c;同时也是用户功能中的最低层 传输层功能&#xff1a; 传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别区别是&#xf…

实验5-8:求最小公倍数和最大公约数(简单循环结构)

实验5-8&#xff1a;求最小公倍数和最大公约数&#xff08;简单循环结构&#xff09; 输入两个整数m和n&#xff0c;用辗转相除法求两个数的最小公倍数和最大公约数。 输出格式&#xff1a;the greatest common divisor:%d\nthe minimum common multiple:%d\n 【输入形式】 输…

九河云:选择AWS有什么优势?

亚马逊云云服务器在国内仍然有大量的用户&#xff0c;这主要得益于其多方面的优势。九河云作为aws的合作伙伴&#xff0c;接下将对人们使用它的原因进行讲解&#xff1a; 首先&#xff0c;AWS在技术上具有显著优势。它提供了丰富的云服务功能&#xff0c;包括计算、存储、数据…

SSH客户端工具输入目标地址端口远程失败故障原因和解决方案

问题表现&#xff1a;SSH客户端工具输入目标地址端口远程失败时&#xff0c;出现ssh client 报 algorithm negotiation failed的异常信息。 使用SSH Secure Shell Client连接Linux服务器的SSH的时候有时会出现错误提示信息&#xff1a;ssh algorithm negotiation failed。这是…

maya模板导入动画

maya模板导入动画&#xff0c;第一帧为模板姿态 要将一个FBX文件中的动画数据导入另一个FBX文件的模板&#xff0c;并使得第一帧是模板的初始姿势&#xff0c;第二帧开始是动画&#xff0c;你可以在Maya中采用以下步骤来操作&#xff1a; 步骤 1: 导入模板FBX 首先&#xff…

ts文件用什么播放器?带您了解TS文件播放器的选择

ts文件用什么播放器&#xff1f;在数字多媒体时代&#xff0c;各种视频文件格式层出不穷&#xff0c;其中TS文件作为一种常见的视频封装格式&#xff0c;广泛应用于高清视频的制作与传输。然而&#xff0c;对于许多用户来说&#xff0c;如何选择合适的播放器来播放TS文件却是一…

node.js 什么是模板引擎?(具体介绍underscore)

前言&#xff1a;在 Web 开发中&#xff0c;数据的呈现通常是基于 HTML 和 CSS 的&#xff0c;而数据的变化又是非常频繁的&#xff0c;需要根据数据动态生成 HTML 标记。手动拼接 HTML 标记显然是一种非常低效的方式&#xff0c;不仅容易出错&#xff0c;而且难以维护。使用&a…