当前位置: 首页 > 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会更合适。 背景…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...