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

代码随想录算法训练营第三十四 |● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果

今天的解析写在了代码注释中

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

讲解链接:https://programmercarl.com/1005.K%E6%AC%A1%E5%8F%96%E5%8F%8D%E5%90%8E%E6%9C%80%E5%A4%A7%E5%8C%96%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.html

class Solution {
public:static bool cmp(int a,int b) {return abs(a)>abs(b);}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--;}}//如果K还没用完,就把最小的值拿出来取负if(K%2 == 1) nums[nums.size()-1] *= -1;int result = 0;for(int a : nums) result +=a;return result;}
};

134. 加油站

讲解链接:https://programmercarl.com/0134.%E5%8A%A0%E6%B2%B9%E7%AB%99.html

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {//逐个元素作为起点进行判断for(int i=0;i<cost.size();i++) {//出发往下一个加油站的剩余油量int shengyu = gas[i]-cost[i];//定义index用来循环下标,防止越界int index = (i+1)%cost.size();//保证油量可以走到下一个点模拟以i为起点行驶一圈while(shengyu > 0 && index!=i) {//累加剩余油量shengyu += gas[index] - cost[index];//末尾的下一个点指向数组头index = (index+1) % cost.size();}if(shengyu >=0 && index==i)return i;}return -1;}
};

135. 分发糖果

讲解链接:https://programmercarl.com/0135.%E5%88%86%E5%8F%91%E7%B3%96%E6%9E%9C.html

有两个过程,前向判断(i与i-1两两比较),大的一项直接+1
后向过程(i与i+1两两比较),这里为了避免重复(1,2,1)这种情况,需要 max( t[i] , t[i+1]+1)

class Solution {
public:int candy(vector<int>& ratings) {vector<int> t(ratings.size(),1);//从前往后,i与i-1进行比较//从第二个数开始,这里是 i 与 i-1 作比较for(int i=1; i<ratings.size();i++) {if(ratings[i] > ratings[i-1])t[i]=t[i-1]+1;//比他左边大一个,这里直接改}//从后往前//从倒数第二个数开始,比较 i 与 i+1//max( t[i] , t[i+1]+1)for(int i = ratings.size()-2; i>=0;i--) {if(ratings[i]>ratings[i+1]) t[i] = max(t[i],t[i+1]+1);}int result = 0;for(int i=0;i<t.size();i++)result+=t[i];return result;}
};
http://www.lryc.cn/news/359155.html

相关文章:

  • GB-T 43206-2023 信息安全技术 信息系统密码应用测评要求
  • 线程进阶-1 线程池
  • LabVIEW中PID控制器系统的噪声与扰动抑制策略
  • JavaWeb笔记整理+图解——Listener监听器
  • AIGC智能办公实战 课程,祝你事业新高度
  • 专科生听劝 这种情况你就不要专转本了
  • MySQL增删查改初阶
  • IService 接口中定义的常用方法
  • api网关kong对高频的慢接口进行熔断
  • python作业:实现一个任务列表管理系统,使用到python类、对象、循环等知识
  • 大宋咨询(深圳产品价格调查)如何开展电子商品渠道价格监测
  • py黑帽子学习笔记_web攻击
  • MVC、MVP 和 MVVM 架构总结
  • C++ vector的使用和简单模拟实现(超级详细!!!)
  • MySQL中,不能在一个DML(数据操纵语言,如INSERT, UPDATE, DELETE)语句中直接引用目标表进行子查询
  • 【CH32V305FBP6】4. systick 配置
  • 【PECL】在扩展中实现 autoload
  • 企业微信H5授权登录
  • 玩机进阶教程------修改gpt.bin分区表地址段 完全屏蔽系统更新 fast刷写分区表 操作步骤解析【二】
  • Java实现数据结构---数组
  • java解析excel文件,返回json
  • uniapp 添加字体ttf
  • Linux入门攻坚——24、BIND编译安装、Telnet和OpenSSH
  • 1.5.3 基于Java配置方式使用Spring MVC
  • Artifactory清理二进制文件丢失的制品
  • C#中的数组探索
  • 身份认证与口令攻击
  • 卷积网络迁移学习:实现思想与TensorFlow实践
  • Ansible04-Ansible Vars变量详解
  • Flutter 中的 SliverCrossAxisGroup 小部件:全面指南