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

代码随想录训练营Day32

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、买卖股票的最佳时机2
  • 二、跳跃游戏
  • 三、跳跃游戏2
  • 四、K次取反后最大化的数组和


前言

今天是跟着代码随想录刷题的第32天,主要是学了买卖股票的最佳时机2,跳跃游戏,跳跃游戏2和k次取反后最大化的数组和


一、买卖股票的最佳时机2

思路:这道题思路直接秒,如果下一个比这个高,如果我还没买,就赶紧入手,如果买了就跳过,如果下一个比这个低,如果我还没卖,就赶紧卖,注意这个循环得到最后一个的前一个,最后一个得判断,如果还没卖就赶紧卖,为啥最后一个不用判断高还是低,是因为最后一个既然能处于可以卖的情况,就说明他一定比倒数第二个还要大,这样倒数第二个才不会卖。

class Solution {
public:int maxProfit(vector<int>& prices) {int a=0,result=0;int buy=0;for(int i=0;i<prices.size()-1;i++){if(prices[i+1]>prices[i]){if(a==0) {buy=prices[i];a=1;}else continue; }else if(prices[i+1]<prices[i]){if(a==1){result=result+prices[i]-buy;a=0;}else continue;}}if(a==1) result=result+prices[prices.size()-1]-buy;return result;}};

二、跳跃游戏

思路:从第一个开始,看范围能不能遍历到最后一个,不过需要始终更新最大的范围,如果循环完了还不能跳到最后一个就说明永远不能跳到最后一个了。

class Solution {
public:bool canJump(vector<int>& nums) {int cover=nums[0];for(int i=0;i<=cover;i++){cover=max(cover,i+nums[i]);if(cover>=nums.size()-1) return true;       }return false;}
};

三、跳跃游戏2

思路:跳下一个的时候,检查这一个的范围哪一个下一个跳的最远,就选这个跳的最远的去跳就可以了,注意start要放到循环外面去改。不然会影响循环的参数。

class Solution {
public:int i=0;int path=0;int start=0;int cover=0;int next=0;int jump(vector<int>& nums) {if(nums.size()==1) return 0;cover=nums[0];while(nums[start]+start<nums.size()-1){   path++;cover=0;for(i=start+1;i<=start+nums[start];i++){if(i<=nums.size()-1&&nums[i]+i>cover){cover=nums[i]+i;next=i;}}start=next;   }path++;return path;}
};

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

思路:就是让最小的负数先取反,如果取完了,再让小的正数取反,再求和
代码:

class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(),nums.end());int fu=0,feifu=0,result=0;int i;for(i=0;i<nums.size();i++){if(nums[i]<0) fu++;}if(k<=fu){for(i=0;i<nums.size();i++){if(i<k){result=result-nums[i];}else result=result+nums[i];   }}if(k>fu){for(i=0;i<nums.size();i++){if(i<fu){nums[i]=-nums[i];}}sort(nums.begin(),nums.end());if((k-fu)%2==1){nums[0]=-nums[0];    }for(i=0;i<nums.size();i++){result=result+nums[i];}}return result;}
};
http://www.lryc.cn/news/380647.html

相关文章:

  • 代码随想录训练营Day31
  • Docker 多阶段构建
  • Linux应急响应——知攻善防应急靶场-Linux(1)
  • 基于CDMA的多用户水下无线光通信(1)——背景介绍
  • vlan三层交换技术--交换机--(自作)
  • 基于springboot websocket和okhttp实现消息中转
  • @PostConstruct 注解的方法用于资源的初始化
  • (一)SvelteKit教程:hello world
  • 华为Atlas NPU ffmpeg 编译安装
  • Python 虚拟环境 requirements.txt 文件生成 ;pipenv导出pip安装文件
  • Less与Sass的区别
  • 力扣-2663
  • CausalMMM:基于因果结构学习的营销组合建模
  • 编译 CUDA 程序的基本知识和步骤
  • [SAP ABAP] 排序内表数据
  • 【UML用户指南】-21-对基本行为建模-活动图
  • 【web2】jquary,bootstrap,vue
  • 独角兽品牌獭崎酱酒:高性价比的酱香之选
  • java打印菱形和空心菱形
  • Day10 —— 大数据技术之Scala
  • Linux应用系统快速部署:docker快速部署linux应用程序
  • 三目运算符中间的表达式可以省略吗(a?:c)?
  • android 彩虹进度条自定义view实现
  • 免费一年SSL证书申请——建议收藏
  • 【docker1】指令,docker-compose,Dockerfile
  • Flutter中的异步和多进程
  • 学习C++第二天
  • 解析Java中1000个常用类:AbstractSet类,你学会了吗?
  • Nginx基础概念和常用操作
  • 圈复杂度是什么?go语言调整圈复杂度举例