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

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

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

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

踩坑:没有

思路:数组里有正有负,肯定先对负数进行取反,且从小开始。如果所有负数都为正后还可以取反,则如果此时次数为奇数,将最小整数取反,如果为偶数,可以直接求和。

代码:

class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(), nums.end());for(int i = 0; i < nums.size(); i++){if(k != 0){if(nums[i] < 0){nums[i] = -nums[i];k--;}}else break;}sort(nums.begin(), nums.end());if(k % 2 != 0) nums[0] = -nums[0];int result = 0;for(int i = 0; i<nums.size(); i++){result = result + nums[i];}return result;}
};

LeetCode 134.加油站

题目链接:134.加油站

踩坑:看了视频

思路:感觉有点像钻了数学的空子,因为第一:所有gas-cost的差值的和小于0的话不会有解。第二:除了第一种情况,其他情况一定有解。所以解题过程就可以表示为如果当前站点会使计划失败(剩余的油为负数),那么只能将下一个站点作为起点。但是其中还是有很多隐藏逻辑以及节省的步骤可以辨析的

代码:

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.分发糖果

踩坑:以为分开考虑是以最小值为中心向左向右。

思路:从左向右遍历处理右孩子大于左孩子的情况,从右向左遍历处理左孩子大于右孩子的情况。初始的孩子分配一个糖果。最后取两种情况下的较大值,因为较小值肯定不满足另一种情况,至于为什么较大的值肯定满足两种情况并没有解释。。。

代码:

class Solution {
public:int candy(vector<int>& ratings) {vector<int> result(ratings.size(), 0);vector<int> t(ratings.size(), 0);result[0] = 1;t[t.size()-1] = 1;for(int i = 1; i < ratings.size(); i++){if(ratings[i] > ratings[i-1]) result[i] = result[i-1] + 1;else result[i] = 1;}for(int i = ratings.size()-2; i >= 0; i--){if(ratings[i] > ratings[i+1]){result[i] = max(result[i], t[i+1] + 1);t[i] = t[i+1] + 1;}else t[i] = 1;}int sum = 0;for(int i: result) sum += i;return sum;}
};
http://www.lryc.cn/news/369589.html

相关文章:

  • 鸿蒙开发HarmonyOS Next 网络框架retrofit 封装 viemodel使用
  • 什么是SpringMVC
  • 【PowerDesigner】PDM生成建表脚本
  • React实现在线预览word报告/本地选择报告预览
  • 计算机哈佛架构、冯·诺依曼架构对比
  • 单片机串口发送为空中断和发送完成中断有什么区别?
  • css特效:对多个tag标签实现模拟地球仪特效
  • 【2024Python教程】Python文件打包成exe,如果有图片怎么打包?有手就会的超简单教程
  • mac环境基于llama3和metaGPT自动开发2048游戏
  • 这些Linux知识可不是靠背就会的!
  • openlayers 绘图功能,绘制多边形,draw组件的使用,一个简单的需求引发的思考(一)
  • 【Flutter】 TextField限制长度时, 第三方手写输入法、ios原始拼音输入法输入被吞问题
  • 快递一键查询,只需快递单号,轻松掌握全程物流信息,让您的包裹追踪无忧!
  • 【Java探索之旅】继承结构 继承和组合 protected final
  • Ubuntu20.04-SLAM软件安装
  • OSI七层网络参考模型
  • RAG与知识库搭建
  • MySQL提权之UDF提权
  • 【设计模式】结构型设计模式之 组合模式
  • 我给KTV服务生讲解防抖,他竟然听懂了
  • 抽象java入门1.3.1
  • 使用Rufus工具制作Ubuntu To Go——很详细
  • Android Jetpack Compose 实现一个电视剧选集界面
  • C++多线程并发
  • 新火种AI|摊上事儿了!13名OpenAI与谷歌员工联合发声:AI失控可能导致人类灭绝...
  • Web前端后端精通:深度解析与技能进阶
  • 【C语言】09.函数递归
  • php高级之框架源码、宏扩展原理与开发
  • (2024,示例记忆,模型记忆,遗忘,差分评估,概率评估)深度学习中的记忆:综述
  • 硬件产品经理