当前位置: 首页 > 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;}
};

相关文章:

  • 前端开发:$nextTick()的使用及原理
  • Leetcode 105:从前序与中序遍历序列构造二叉树
  • 大数据中的电商数仓项目:探秘业务的核心
  • 【C++】——string模拟实现
  • GB-T 43206-2023 信息安全技术 信息系统密码应用测评要求
  • Vim安装与配置教程(解决软件包Vim没有安装可候选)
  • Mac安装第三方软件的命令安装方式
  • Django Celery技术详解
  • 【手撕面试题】Vue(高频知识点一)
  • Java八股文:程序员的“面试经”还是技术壁垒?
  • Vue Node 编译报错:digital envelope routines::unsupported
  • 打家劫舍I 打家劫舍II (leetcode)
  • 使用cad绘制一个螺旋输送机
  • 【Unity】实现轮盘抽奖
  • 【数据结构】二叉树运用及相关例题
  • python3.6+scrapy+mysql 爬虫实战
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 78. Subsets
  • Android组件 - 收藏集 - 掘金
  • Bytom交易说明(账户管理模式)
  • gitlab-ci配置详解(一)
  • happypack两次报错的问题
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • laravel with 查询列表限制条数
  • python_bomb----数据类型总结
  • Python连接Oracle
  • Python语法速览与机器学习开发环境搭建
  • React 快速上手 - 07 前端路由 react-router
  • Yeoman_Bower_Grunt
  • 大型网站性能监测、分析与优化常见问题QA
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端设计模式
  • 前端性能优化--懒加载和预加载
  • 前言-如何学习区块链
  • 一道面试题引发的“血案”
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 再次简单明了总结flex布局,一看就懂...
  • ​浅谈 Linux 中的 core dump 分析方法
  • # Redis 入门到精通(七)-- redis 删除策略
  • #NOIP 2014# day.2 T2 寻找道路
  • #QT(一种朴素的计算器实现方法)
  • $(selector).each()和$.each()的区别
  • (06)金属布线——为半导体注入生命的连接
  • (39)STM32——FLASH闪存
  • (C++哈希表01)
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (规划)24届春招和25届暑假实习路线准备规划
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .Net 6.0 处理跨域的方式
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .Net 高效开发之不可错过的实用工具