当前位置: 首页 > news >正文

代码随想录算法训练营第36期DAY36

贪心好难,希望能坚持到柳暗花明那天。

DAY36

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

自己的方法,注意越界条件放在最前面就好:

  1. class Solution {
  2. public:
  3.     int largestSumAfterKNegations(vector<int>& nums, int k) {
  4.         //自己的方法:
  5.         sort(nums.begin(),nums.end());
  6.         for(int i=0;i<nums.size()&&nums[i]<0&&k>0;i++){
  7.             nums[i]*=-1;
  8.             k--;
  9.         }
  10.         sort(nums.begin(),nums.end());
  11.         if(k%2!=0) nums[0]*=-1;
  12.         int res=0;
  13.         for(int n:nums) res+=n;
  14.         return res;
  15.         //报错越界,为什么?注意限制条件的先后顺序,把nums.size()放在最前面,因为越界是不能的,所以首先判断。
  16.     }
  17. };

代码随想录的方法,正好复习一下重载比较符的写法。

记得把自己的重载比较符写进sort里面去。

  1. class Solution {
  2. public:
  3.     static bool mycmp(int a,int b){
  4.         return abs(a)>abs(b);
  5.     }
  6.     int largestSumAfterKNegations(vector<int>& nums, int k) {
  7.         sort(nums.begin(),nums.end(),mycmp);
  8.         for(int i=0;i<nums.size();i++){
  9.             if(nums[i]<0&&k>0) {
  10.                 nums[i]*=-1;
  11.                 k--;
  12.             }
  13.         }
  14.         if(k%2!=0) nums[nums.size()-1]*=-1;
  15.         int res=0;
  16.         for(int n:nums)res+=n;
  17.         return res;
  18.     }
  19. };

134加油站

for循环适合模拟从头到尾的遍历,而while循环适合模拟环形遍历,要善于使用while

  1. 试试暴力法,既考验思维,又考验语法能力:

还是做不到,加油练习:

修改之后:

代码逻辑:先算油量,根据油量再移动index;(看当下能不能走得动,能不能出发)

  1. class Solution {
  2. public:
  3.     int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
  4.         for(int i=0;i<gas.size();i++){
  5.             //先算油量,根据油量再移动index;(看当下能不能走得动,能不能出发)
  6.             int store=0,index=i;
  7.             store+=gas[i]-cost[i];
  8.             if(store<0continue;
  9.             index=(index+1)%gas.size();
  10.             while(store>=0&&index!=i){
  11.                 store+=gas[index]-cost[index];
  12.                 index=(index+1)%gas.size();
  13.             }
  14.             if(store>=0&&index==i) return i;
  15.         }
  16.         return -1;
  17.     }
  18. };

没问题了,只是会超时。有提升就好。

  1. 后退法_全局贪心

知道思想,代码还是写不出来。思想也没对。

  1. 全局油量不够
  2. 累加过程没有出现负值,可行
  3. 出现负值,起点后退。
  1. class Solution {
  2. public:
  3.     int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
  4.         int mi=INT_MAX;
  5.         int cursum=0;
  6.         for(int i=0;i<gas.size();i++){
  7.             cursum+=gas[i]-cost[i];
  8.             if(cursum<mi) mi=cursum;
  9.         }
  10.         if(cursum<0return -1;
  11.         if(mi<0){
  12.             for(int i=gas.size()-1;i>=0;i--){
  13.                 mi+=gas[i]-cost[i];
  14.                 if(mi>=0return i;
  15.             }
  16.         }
  17.         else return 0;
  18.         return -1;
  19.     }
  20. };

  1. 前进法_局部贪心

[0,i]一旦负数了,就从[i+1开始选起点。(家产败光了的意思——用光了留下当时的剩余,表明自己的都不够用,所以要换到下一个起点)。之后呢?不会了:for遍历的就是起点,找起点就好了。

前进法待二刷:

  1. class Solution {
  2. public:
  3.     int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
  4.         int cursum=0,totalsum=0,start=0;//标记起点,total判定一圈油量
  5.         for(int i=0;i<gas.size();i++){
  6.             totalsum+=gas[i]-cost[i];
  7.             cursum+=gas[i]-cost[i];
  8.             if(cursum<0){
  9.                 start=i+1;
  10.                 cursum=0;
  11.             }
  12.         }
  13.         if(totalsum<0return -1;
  14.         return start;
  15.     }
  16. };

135分发糖果,困难

待二刷:

  1. class Solution {
  2. public:
  3.     int candy(vector<int>& ratings) {
  4.         vector<intcandy(ratings.size(),1);
  5.         if(ratings.size()==1return 1;
  6.         for(int i=1;i<ratings.size();i++){
  7.             if(ratings[i]>ratings[i-1]){
  8.             candy[i]=candy[i-1]+1;
  9.             }
  10.         }
  11.         for(int i=candy.size()-2;i>=0;i--){
  12.             if(ratings[i]>ratings[i+1])
  13.             candy[i]=max(candy[i+1]+1,candy[i]);
  14.         }
  15.         int res=0;
  16.         for(int r:candy) res+=r;
  17.         return res;
  18.     }
  19. };

相关文章:

代码随想录算法训练营第36期DAY36

贪心好难&#xff0c;希望能坚持到柳暗花明那天。 DAY36 1005K次取反后最大化的数组和 自己的方法&#xff0c;注意越界条件放在最前面就好&#xff1a; class Solution {public: int largestSumAfterKNegations(vector<int>& nums, int k) { //自己的…...

zookeeper安装教程

前置环境&#xff1a; hadoop3.3.6 三台集群 CentOS7 (图文并茂)基于CentOS-7搭建hadoop3.3.6大数据集群-CSDN博客 1.下载并上传 下载并上传ZOOKEEPER安装包到主节点 官网下载地址 Index of /dist/zookeeper (apache.org) 切换到/opt/bigdata目录&#xff08;根据自己的情况…...

windows2008修改远程桌面端口,如何果断修改远程桌面端口,确保系统安全无忧!

在数字化时代的浪潮中&#xff0c;Windows 2008系统以其卓越的稳定性和可靠性&#xff0c;赢得了众多企业和个人的青睐。然而&#xff0c;随着网络安全问题的日益严峻&#xff0c;如何确保远程桌面连接的安全&#xff0c;成为了摆在我们面前的一道难题。今天&#xff0c;我将为…...

【计算机网络原理】对传输层TCP协议的重点知识的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...

mysql实战——半同步复制搭建

一、搭建前准备 主库 192.168.1.78 从库 192.168.1.76 二、搭建 1、先搭建异步复制 MySQL实战——主从异步复制搭建&#xff08;一主一从&#xff09;-CSDN博客 2、在异步的基础上搭建半同步复制 主库 mysql>install plugin rpl_semi_sync_slave soname semisy…...

Leetcode 3152. Special Array II

Leetcode 3152. Special Array II 1. 解题思路2. 代码实现 题目链接&#xff1a;3152. Special Array II 1. 解题思路 这一题的话思路上就是分堆&#xff0c;使用贪婪算法找到每一个元素所在的最长special子序列&#xff0c;然后判断query的首尾元素是不是属于同一个special…...

人工智能与区块链技术:开启未来科技的双引擎

在当今科技飞速发展的时代&#xff0c;人工智能和区块链技术如同两颗璀璨的明星&#xff0c;照亮了人类通往未来的道路。 人工智能&#xff0c;以其强大的学习和分析能力&#xff0c;正悄然改变着我们的生活。它能够处理海量的数据&#xff0c;为我们提供精准的预测和个性化的…...

Python筑基之旅-MySQL数据库(二)

目录 一、第三方库 1、mysql-connector-python 1-1、由来 1-2、优缺点 1-2-1、优点 1-2-1-1、官方支持 1-2-1-2、纯Python实现 1-2-1-3、全面支持 1-2-1-4、兼容性 1-2-1-5、易于使用 1-2-2、缺点 1-2-2-1、性能 1-2-2-2、安装 1-2-2-3、社区支持 1-2-2-4、扩…...

web前端面试题

web前端面试题 1、前端如何实现优化性能 (1)减少网络时间 ①使用DNS缓存技术 ​ ②减少需要传输的文件尺寸 ​ ③加快文件传输速度 (2)减少发送的请求数量 ①利用浏览器缓存 ​ ②使用合并的图片文件 (3)提高浏览器下载的并发度 ①JS文件放在HTML文档最后 ​ ②使用多个域名 (…...

创建型模式之单例

文章目录 概述定义场景小结 概述 设计模式包括创建型模式&#xff0c;结构型模式&#xff0c;行为型模式。 今天先看看创建型模式&#xff0c;而单例是创建型模式中的第一个而且是常用的&#xff0c;就从它开始吧。 定义 单例模式用来创建全局唯一的对象。一个类只允许创建一…...

在 Next.js 应用中创建ContactForm表单提交

在 Next.js 应用中创建表单提交涉及几个关键步骤&#xff0c;包括设置表单、处理表单提交以及管理服务器端或 API 逻辑。以下是使用 Next.js 开发一个简单表单提交的步骤。 1. 设置表单组件 首先&#xff0c;创建一个表单组件。在这个例子中&#xff0c;我们将创建一个 Conta…...

HTML5 3D图像应用

目录 关键技术与规范应用示例与领域相关工具与框架HTML5 3D图像应用是利用HTML5、CSS3、JavaScript(及其相关的库和框架)以及其他现代Web技术(如WebGL)构建的,能够在浏览器中呈现三维图形、动画和交互式场景的应用程序。以下是一些关于HTML5 3D图像应用的关键点和示例: …...

SQL——DML对表中数据的操作

# 创建数据库 create database if not exists db_BigData default character set gb2312 default collate gb2312_chinese_ci; # 创建表 create table if not exists db_BigData.stu (id int auto_increment primary key comment 主键ID,name var…...

深度学习之基于Matlab卷积神经网络(CNN)手写数字识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 手写数字识别是计算机视觉领域的一个重要问题&#xff0c;也是深度学习应用的一个典型场景。卷…...

工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端

工业4.0 企业级云MES全套源码&#xff0c;支持app、小程序、H5、台后管理端 采用javaspringboot-vue.jsuniapp开发 随着工业4.0的快速发展&#xff0c;制造执行系统&#xff08;MES&#xff09;成为了智能制造的核心。今天&#xff0c;将为大家介绍一款开源的MES系统——MES管…...

Science| 单体耦合纤维实现无芯片纺织电子(纤维器件/智能织物/柔性可穿戴电子)

东华大学Hongzhi Wang,Chengyi Hou和Qinghong Zhang团队在《Science》上发布了一篇题为“Single body-coupled fiber enables chipless textile electronics”的论文。论文内容如下: 一、 摘要 智能纺织品为将技术融入日常生活中提供了理想的平台。然而,目前的纺织电子系统…...

前端面试项目细节重难点(已工作|做分享)

面试官提问&#xff1a;需求场景&#xff1a;页面上有一个单选框&#xff0c;有是否两个选项&#xff1a;当用户选择是&#xff0c;出现一个输入框&#xff0c;用户可以输入内容&#xff0c;给后端的保存接口传入参数radio和content这两个字段&#xff0c;值分别是用户选项和输…...

ASTGCN 论文学习下

文章目录 4.4.2 时间注意力4.4.2 计算示例 4.5 空间-时间卷积4.5.1 空间维度上的图卷积4.5.2 时间维度上的图卷积4.5.3 空间-时间卷积模块总结 4.6 多组件融合 5 实验5.1 数据集5.1.1 PeMSD45.1.2 PeMSD8 5.2 数据预处理5.3 实验设置5.4 基线模型5.5 比较与结果分析5.5.1 主要发…...

【面经】单片机

1、单片机IO口工作方式 输入 模拟输入&#xff08;GPIO_Mode_AIN&#xff09;&#xff1a;关闭施密特触发器&#xff0c;将电压信号传送到片上外设模块&#xff0c;通常用于连接模拟信号源。浮空输入&#xff08;GPIO_Mode_IN_FLOATING&#xff09;&#xff1a;在浮空输入状态…...

基于manifest文件批量将coding的仓库导入gitlab中

文章目录 写在前面的话背景编写manifest文件最终效果 写在前面的话 前面有讲过通过manifest清单导入项目到gitlab中&#xff0c;但是实际的操作是不同gitlab实例之间的操作&#xff0c;然而对于在不同gitlab实例的repo迁移而言&#xff0c;显然direct transfer会更合适。 背景…...

终极指南:如何用Edgar-Unity打造无限变化的2D地牢世界

终极指南&#xff1a;如何用Edgar-Unity打造无限变化的2D地牢世界 【免费下载链接】Edgar-Unity Unity Procedural Level Generator 项目地址: https://gitcode.com/gh_mirrors/ed/Edgar-Unity 还在为每个关卡的手工设计而烦恼吗&#xff1f;是否梦想着让你的游戏地图能…...

X-TRACK开源GPS自行车码表深度解析:从嵌入式架构到离线地图的完全实战指南

X-TRACK开源GPS自行车码表深度解析&#xff1a;从嵌入式架构到离线地图的完全实战指南 【免费下载链接】X-TRACK A GPS bicycle speedometer that supports offline maps and track recording 项目地址: https://gitcode.com/gh_mirrors/xt/X-TRACK X-TRACK是一款基于A…...

在Node.js后端服务中集成Taotoken,调用多模型API完成内容生成

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Node.js后端服务中集成Taotoken&#xff0c;调用多模型API完成内容生成 将大模型能力集成到后端服务是现代应用开发的常见需求。…...

RK3568播放RTSP摄像头实测:软解1080P直接CPU跑满,降到360P才流畅,硬解到底怎么搞?

RK3568 RTSP摄像头解码实战&#xff1a;从软解瓶颈到硬解优化全解析 最近在调试RK3568开发板的RTSP摄像头播放功能时&#xff0c;遇到了一个典型问题&#xff1a;1080P软解直接让CPU跑满&#xff0c;降到360P才能勉强流畅。这让我开始深入探索瑞芯微平台的硬解方案&#xff0c…...

一部95分钟AI电影杀进戛纳后,影视行业开始不淡定了

作者&#xff1a;王聪彬今年戛纳电影节的C位&#xff0c;不是红毯&#xff0c;不是明星&#xff0c;也不是哪位导演的新片&#xff0c;AI把C位抢了。8支由火山引擎视频生成大模型Seedance 2.0创作的AI影片&#xff0c;第一次正式登上戛纳舞台。过去代表全球电影工业最高门槛的戛…...

HarmonyOS 6学习:水平仪气泡移动方向错误的完整分析与修复方案

从"反向移动"到"精准指向"&#xff1a;一次完整的传感器应用开发经历在HarmonyOS 6应用开发中&#xff0c;我最近负责开发一个建筑工具应用&#xff0c;其中包含一个水平仪功能。这个功能对建筑工人和DIY爱好者来说非常实用——通过手机传感器检测设备倾斜…...

Windows和Office智能激活工具KMS_VL_ALL_AIO:一站式解决方案指南

Windows和Office智能激活工具KMS_VL_ALL_AIO&#xff1a;一站式解决方案指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活和Office软件授权而烦恼吗&#xff1f;KMS_VL…...

抖音批量下载神器:免费开源工具终极指南,轻松保存高清视频与音乐

抖音批量下载神器&#xff1a;免费开源工具终极指南&#xff0c;轻松保存高清视频与音乐 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and b…...

DownKyi完整指南:三步掌握B站8K超高清视频下载

DownKyi完整指南&#xff1a;三步掌握B站8K超高清视频下载 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。…...

【 linux 】来完成一个进度条吧

c语言是有缓冲区的&#xff0c;缓冲区刷新有三种方式&#xff0c;输入\n&#xff0c;程序结束后自动刷新&#xff0c;fflush&#xff08;stdout&#xff09;手动刷新。效果展示视觉上#是逐个往后加的&#xff0c;这是视觉欺骗。事实是每次#都是从头开始的&#xff0c;只不过计算…...