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

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

题目链接 1005 K 次取反后最大化的数组和

本题目一开始我认为直接排序,让最小的取反回来就直接结束,我太天真了,一个反例直接猝死,下面上贪心的思路:

本题一共用到了两个贪心,第一个是我们的数组中有负数时每次就让绝对值最大的负数转变,直到用到k为零,第二个贪心的地方,如果都为正数,就取最小的一个正数来让其不停的取反,如果k为奇数,反转一次就行,如果k为偶数,即不需要反转。下面上代码:

class Solution {static bool cmp(int a,int b){return abs(a)>abs(b);}
public:int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(),nums.end(),cmp);for(int i=0;i<nums.size();i++){if(nums[i]<0&&k>0){nums[i]*=-1;k--;}}if(k%2 == 1){nums[nums.size()-1]*=-1;}int result = 0;for(int i=0;i<nums.size();i++){result+=nums[i];}return result;}
};

Leetcode 134. 加油站

题目链接 134 加油站

本题目一开始想的时候这个题目和贪心毫无关系,但是仔细看过卡哥的讲解后,恍然大物,这才是真的算法,并且才感觉到贪心思想。

每个加油站的剩余量rest[i]为gas[i] - cost[i]。

i从0开始累加rest[i],和记为curSum,一旦curSum小于零,说明[0, i]区间都不能作为起始位置,因为这个区间选择任何一个位置作为起点,到i这里都会断油,那么起始位置从i+1算起,再从0计算curSum。

那么局部最优:当前累加rest[i]的和curSum一旦小于0,起始位置至少要是i+1,因为从i之前开始一定不行。全局最优:找到可以跑一圈的起始位置

下面上代码:
 

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int cursum = 0;int totalsum = 0;int start = 0;for(int i=0;i<gas.size();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;}
};

Leetcode 135. 分发糖果

题目链接 135 分发糖果

本题之前看到过,当时比较菜,没有看懂,本题目的一个核心思想:这道题目一定是要确定一边之后,再确定另一边,例如比较每一个孩子的左边,然后再比较右边,如果两边一起考虑一定会顾此失彼。其次,需要满足一个点:我们要让这个等式a[i-1]<a[i]>a[i+1]成立,才能兼顾题目中所说的相邻两个孩子评分更高的孩子会获得更多的糖果,并且需要最少的糖果,如果反过来,取两边高的话,就会不满足最少的糖果的要求,这里也说明了,在判断左孩子比右孩子大的时候,为什么需要后序遍历的原因,如果前序遍历就没法满足a[i-1]<a[i]>a[i+1]

candyVec[i]是之前比较右孩子大于左孩子得到的糖果数量。

局部最优:取candyVec[i + 1] + 1 和 candyVec[i] 最大的糖果数量,保证第i个小孩的糖果数量既大于左边的也大于右边的。全局最优:相邻的孩子中,评分高的孩子获得更多的糖果。

下面上代码:

class Solution {
public:int candy(vector<int>& ratings) {vector<int> candyVec(ratings.size(),1);//初始化都为1for(int i=1;i<ratings.size();i++){//从前往后遍历,并且右孩子比左孩子大的情况if(ratings[i]>ratings[i-1]){candyVec[i] = candyVec[i-1]+1;}}for(int i=ratings.size()-2;i>=0;i--){//从后往前遍历,并且是左孩子比右孩子大的情况if(ratings[i] > ratings[i+1]){candyVec[i] = max(candyVec[i],candyVec[i+1]+1);}}int result = 0;for(int i=0;i<candyVec.size();i++){result+=candyVec[i];}return result;}
};

学六级,end

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

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

相关文章

css之svg 制作圆及旋转

1.代码 <template><div class"loading-box"><div class"circle-container"><svg width"75" height"75" class"move-left-to-right"><circle cx"37.5" cy"37.5" r"26&…

高端影像仪:打破微小产品测量局限

在现代工业生产中&#xff0c;影像仪以CCD数位影像为基石&#xff0c;将计算机屏幕测量技术与空间几何运算的能力融为一体&#xff0c;可以用于测量微小产品的各种尺寸和形状&#xff0c;为生产过程中的质量控制提供重要的参考依据。 影像仪产品内置高精度光学电动双倍镜头&am…

什么是动态住宅IP?它有什么用途?

随着网络的迅速发展&#xff0c;许多人对代理IP已经有了比较深刻的认识&#xff0c;并且广泛地运用到了各自的业务中&#xff0c;尤其在跨境的相关业务中表现尤其卓越。对于代理IP的类别&#xff0c;也需要根据自己的业务类型具体选择最合适的&#xff0c;那么今天IPFoxy就给大…

网页设计--第5次课后作业

1、快速学习JavaScript的基本知识第1-10章 JavaScript入门 - 绿叶学习网 2、使用所学的知识完成以下练习。需求如下3个&#xff1a; 1&#xff09;点亮灯泡 2&#xff09;将所有的div标签的标签体内容后面加上&#xff1a; very good 3&#xff09;使所有的复选框呈现被选…

【javaWeb】HTTP协议

HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的应用层协议 HTTP 是一个文本格式的协议. 可以通过 Chrome 开发者工具或者 Fiddler 抓包, 分析 HTTP 请求/响应的细节. 上图是通过Fiddler对访问百度搜索页时抓取的一个http协议的包。 观察抓包结果,可以看到,当前 http…

myAGV 2023 Pi 全新升级!

Introduction 在高速发展的自动化和机器人技术领域&#xff0c;我们的公司一直致力于提供高效、灵活且可靠的轻量级机械臂解决方案。然而&#xff0c;我们也深知&#xff0c;传统的机械臂需要固定在一个地方&#xff0c;这在一定程度上限制了其在空间上的应用范围。为了突破这一…

【论文阅读】ActiveNeRF:通过不确定性估计候选新视图

【论文阅读】ActiveNeRF: Learning where to See with Uncertainty Estimation Abstract1 Introduction3 Background4 NeRF with Uncertainty Estimation5 ActiveNeRF5.1 Prior and Posterior Distribution5.2 Acquisition Function5.3 Optimization and Inference 6 Experimen…

ECharts配置项手册了解及使用

1&#xff1a;点击文档然后选择配置项手册或者&#xff1a;Documentation - Apache ECharts 2&#xff1a;

中间件安全:Weblogic 漏洞.(使用工具可以利用多种类型漏洞)

中间件安全&#xff1a;Weblogic 漏洞.&#xff08;使用工具可以利用多种类型漏洞&#xff09; WebLogic 是美国 Oracle 公司出品的一个 application server&#xff0c;确切的说是一个基于 JAVA EE 架构的中间件&#xff0c;WebLogic 是用于开发、集成、部署和管理大型分布式…

达梦数据库ddl锁等待时间太短?解决方法

在日常工作中&#xff0c;一般不会允许停业务来进行DDL维护操作&#xff0c;因为停止业务的代价会比较高&#xff0c;对于复杂的系统&#xff0c;停机维护更是充满了不可控的隐患和危险。DM数据库可以采用延长锁超时的时间&#xff0c;以及开启快速加列、修改列、删除列提高DDL…

亚信科技AntDB数据库与库瀚存储方案完成兼容性互认证

近日&#xff0c;亚信科技AntDB数据库与苏州库瀚信息科技有限公司自主研发的RISC-V数据库存储解决方案进行了产品兼容测试。经过双方团队的严格测试&#xff0c;亚信科技AntDB数据库与库瀚数据库存储解决方案完全兼容、运行稳定。除高可用性测试外&#xff0c;双方进一步开展TP…

Django二转day01

web应用 cs/bs 架构 # c/s mysql c和s装在同一台机器上 -c链接s&#xff1a; cmd窗口中 mysql -h 127.0.0.1 -P 3306 -uroot -p密码 -网络协议&#xff1a;一般情况&#xff0c;都是软件自定制协议---》基本都是基于TCP # b/s 浏览器--服务端 -咱们写的djan…

基于springboot-“有光”摄影分享网站系统(2023年☆全网唯一)【附源码|数据库|表结构|万字文档(LW)|技术文档|说明文档】

主要功能 前台登录&#xff1a; 注册用户&#xff1a;用户账号、密码、姓名、手机号、身份证号、性别、邮箱 用户&#xff1a; ①首页、公告资讯展示、图片素材展示、活动展示、视频素材展示、查看更多 ②论坛、发布帖子、活动、活动标题、活动类型、公告资讯、公告标题、公告…

C#,数值计算——插值和外推,径向基函数插值(RBF_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 径向基函数插值 /// Object for radial basis function interpolation using n points in dim /// dimensions.Call constructor once, then interp as many times as desir…

2023年亚太杯APMCM数学建模大赛B题玻璃温室小气候调控

2023年亚太杯APMCM数学建模大赛 B题 玻璃温室小气候调控 原题再现 温室作物的产量受各种气候因素的影响&#xff0c;包括温度、湿度和风速[1]。其中&#xff0c;适宜的温度和风速对植物生长至关重要[2]。为了调节玻璃温室内的温度、风速等气候因素&#xff0c;在温室设计中常…

vue3+ts 指令简写

<template><div class"btns"><button v-has-show"shop:create">创建</button><button v-has-show"shop:edit">编辑</button><button v-has-show"shop:delete">删除</button></div…

集软件库、论坛、社区、工具箱、积分商城、会员体系、在线商城一体的后台系统+HBuilderX 前端软件社区

HBuilderX前端软件社区thinkphp后端源码 搭建好后台 在前端找到 util 这个文件 把两个js文件上面的填上自己的域名 电脑需要下载&#xff1a;HBuilderX 下载后 登录账号 没有账号就注册账号 然后上传文件 在选择你上传的文件 即可 打包选择 “发行” 可以打包app h5等等 …

开源语音大语言模型——Qwen-Audio

论文链接&#xff1a;https://arxiv.org/pdf/2311.07919.pdf 开源代码&#xff1a;https://github.com/QwenLM/Qwen-Audio 一、背景 大型语言模型&#xff08;LLMs&#xff09;由于其良好的知识保留能力、复杂的推理和解决问题能力&#xff0c;在通用人工智能&#xff08;AGI…

Android Handler同步屏障:深入解析

Android Handler同步屏障&#xff1a;深入解析 在Android开发中&#xff0c;Handler和MessageQueue是处理线程间通信的重要组件。除了常见的消息发送和处理功能&#xff0c;Handler还提供了一个高级特性&#xff1a;同步屏障。本文将深入探讨这一特性&#xff0c;包括它的工作…

Matplotlib线形图的创建_Python数据分析与可视化

线形图的创建 绘制线形图设置颜色和风格设置坐标轴上下限设置图形标签 绘制线形图 在所有图形中&#xff0c;最简单的应该就是线性方程y f (x) 的可视化了。来看看如何创建这个简单的线形图。要画Matplotlib图形时&#xff0c;都需要先创建一个图形fig 和一个坐标轴ax。创建图…