代码随想录训练营Day24:贪心算法解决买卖股票和跳跃游戏

devtools/2024/12/21 22:23:32/

1.122买卖股票的最佳时机二

贪心策略:按一天为时间,找到里面收益为正的时候,然后累加。

price[i]-price[j] = (price[i]-price[i-1])+(price[i-1]-price[i-2])+...+(price[j+1]-price[i])

class Solution {
public:int maxProfit(vector<int>& prices) {int val = 0;int count = 0;int n = prices.size();for(int i = 1;i<n;i++){count = prices[i]-prices[i-1];if(count>0){val += count;}}return val;}
};

2.55跳跃游戏

贪心策略:判断当前的覆盖范围是否比原先的最大覆盖范围大,如果是,那么就更新覆盖范围。直到将所有范围的全部覆盖。

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

3.45跳跃游戏二

贪心策略:在前面的跳跃游戏的覆盖范围的情况下加上一个单步的最大范围,即通过判断第ans步能够走到的最远距离:先确定第ans-1步能够到达的最远的覆盖范围,然后根据其覆盖范围遍历出新的最大的覆盖范围即nextDistance(不需要再遍历前面的,只需要遍历新的即可,所以只需要做i的累加遍历即可)。

小细节:for循环里面的i<n-1和if(i == curDistance)搭配使用,当i == n-2(对边界处理)的时候即最后一个的时候,如果curDistance>i那么就不需要再加ans了,如果curDistance == i那么需要再走一步(因为假设说了你一定可以走到最后一步)。

class Solution {
public:int jump(vector<int>& nums) {int n = nums.size();int curDistance = 0;//当前覆盖的最大范围int nextDistance = 0;//下一个覆盖的最大范围int ans = 0;//步数for(int i=0;i<n-1;i++){//nextDistance = max(nextDistance,i+nums[i]);//关键在这里//如果在i == n-2的时候,如果i == curDistance,ans+1,如果不相等,那么就是返回ansif(i == curDistance){//遇到当前所在的最远距离curDistance = nextDistance;//更新最远距离ans++;}}return ans;}
};


http://www.ppmy.cn/devtools/34481.html

相关文章

webGL=>着色器的变量声明、设置、预定变量等

目录 简介 变量特点 1. Attribute 变量 2. Uniform 变量 3. Varying 变量 4. Const 变量 5. 预定义变量 示例&#xff1a; 1. 顶点着色器示例 2. 片元着色器示例&#xff1a; 设置attribute示例 设置uniform示例 完整代码示例&#xff1a; 简介 着色器中变量声明…

斐波那契数

509. 斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 …

常见的容器技术有哪些

容器技术是一种轻量级的软件封装方式&#xff0c;它将软件代码及其依赖项打包在一起&#xff0c;这样应用可以在任何支持容器的系统上无缝运行。它允许应用程序及其依赖项在一个隔离的环境中运行&#xff0c;这个环境被称为容器。容器技术有助于提高应用程序的可移植性、一致性…

MySql的基本操作

一、连接数据库&#xff0c;查看对象&#xff0c;数据库的维护&#xff0c;mysql的数据类型 1、连接数据库 mysql -hlocalhost -uroot -proot 2、查看对象 show databases; 查看有哪些数据库 show tables;查看有哪些表 show columns from [table_name];查看表里有哪些字段…

通过七析BI自定义组件实现3D效果图表渲染

关于可视化的一些概念已经在之前的文章进行了大概的介绍&#xff0c;接下来我们会更加深入探讨关于呈现效果的内容。 为什么要用3D图表在仪表盘中进行呈现&#xff1f; 当讨论到这个问题的时候&#xff0c;自然就会回归到一个核心&#xff1a;3D与2D的呈现效果有什么区别&#…

CMakeLists.txt语法规则:提供信息的变量说明一

一. 简介 前面几篇文章学习了 CMakeLists.txt语法中 部分常用命令。 接下来学习CMakeLists.txt语法中部分常用变量&#xff0c;变量也是 cmake 中的一个重头戏&#xff0c;cmake 提供了很多内置变量。每一个变量都有它自己的含义&#xff0c;可以通过如下链接地址查询到所有…

Github 2024-05-06 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-06统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Jupyter Notebook项目2Python项目2C#项目1JavaScript项目1Cuda项目1TypeScript项目1Rust项目1C项目1简单、纯净的C/CUDA中的LLM培训 创建周期:…

GO语言核心30讲 实战与应用 (第一部分)

原站地址&#xff1a;Go语言核心36讲_Golang_Go语言-极客时间 一、测试的基本规则和流程 1. GO程序主要分三类测试&#xff1a;功能测试、性能测试&#xff0c;以及示例测试。 示例测试和功能测试差不多&#xff0c;但它更关注程序打印出来的内容。 2. 测试文件的名称应该以…