代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II,55. 跳跃游戏,45.跳跃游戏II

目录

  • 122.买卖股票的最佳时机II
    • 思路
    • 代码
  • 55. 跳跃游戏
    • 思路
    • 代码
  • 45.跳跃游戏II
    • 思路
    • 代码

122.买卖股票的最佳时机II

题目链接:122.买卖股票的最佳时机II

文档讲解:代码随想录

视频讲解:贪心算法也能解决股票问题!LeetCode:122.买卖股票最佳时机II

思路

在低价的时候买入,在连续天数内的最高价时卖出。

假如第0天买入,第3天卖出,则利润为:price[3] - price[0].

相当于(price[3] - price[2]) + (price[2] - price[1]) + (price[1] - price[0]) .

如果此时利润最高,只需要每相邻两天之间的利润是正值,把所有正值相加即可。

代码

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

55. 跳跃游戏

题目链接:55. 跳跃游戏

文档讲解:代码随想录

视频讲解:贪心算法,怎么跳跃不重要,关键在覆盖范围 | LeetCode:55.跳跃游戏

思路

不考虑每次跳几步,只考虑每次可以跳跃的最大步数,不断更新最大能够覆盖的范围,看最大范围能够到终点。

代码

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

45.跳跃游戏II

题目链接:45.跳跃游戏II

文档讲解:代码随想录

视频讲解:贪心算法,最少跳几步还得看覆盖范围 | LeetCode: 45.跳跃游戏II

思路

每次都走最多的步,计算最大步数之内所有步数能够覆盖的最大范围,下一次走覆盖范围的最大步数。

在这里插入图片描述
如上图,第一步最大跳两步能到达2的位置,那么在这两步之内的所有步数的下一次能够到达的最大范围是最大步数内所有步数的下一次能够覆盖距离的和,即1和2位置所能跳跃步数的和。在上图中,红色覆盖的范围内最多只需两步即可到达。

代码

class Solution {
public:int jump(vector<int> &nums) {if (nums.size() == 1)return 0;int curDistance = nums[0];int nextDistance = nums[0];int ans = 1;for (int i = 1; i < nums.size(); i++) {nextDistance = max(i + nums[i], nextDistance);if (curDistance >= nums.size() - 1)break;if (i == curDistance) {ans++;curDistance = nextDistance;}}return ans;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/637582.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单链表的介绍

链表是一种常见的线性数据结构&#xff0c;用于存储一系列元素。它由一系列节点组成&#xff0c;每个节点包含两部分&#xff1a;数据域和指针域。其中&#xff0c;数据域用于存储元素的值&#xff0c;指针域用于指向下一个节点。 单链表的特点包括&#xff1a; 节点组成&…

Flowable 基本用法

一. 什么是Flowable Flowable 是一个基于 Java 的开源工作流引擎&#xff0c;用于实现和管理业务流程。它提供了强大的工作流引擎和一套丰富的工具&#xff0c;使开发人员能够轻松地建模、部署、执行和监控各种类型的业务流程。Flowable 是 Activiti 工作流引擎的一个分支&am…

线程池中常见的几大问题

说说你对线程池的了解&#xff1f; 线程池&#xff0c;是对一系列线程进行管理的资源池&#xff0c;当有任务来时&#xff0c;我们可以使用线程池中的线程&#xff0c;完成任务时不需要被销毁&#xff0c;会重新回到池子中&#xff0c;等待下一次的复用。 为什么要使用线程池…

垃圾收集器ParNewCMS与底层三色标记算法详解

垃圾收集算法 分代收集理论 当前虚拟机的垃圾收集都是采用分代收集算法,这种算法没有什么新思想,只是依据对象的存活周期不同将内存分为几块.一般将Java堆分为新生代和老年代,这样就可以根据各个年代的特点选择合适的垃圾收集算法. 比如在新生代中,每次收集都会有大量对象(近…

MKS GM50A MFC GUI 软件使用指南GE50A调零原理及步骤PPT

MKS GM50A MFC GUI 软件使用指南GE50A调零原理及步骤PPT

介绍与部署 Zabbix 监控系统

目录 前言 一、监控系统 1、主流的监控系统 2、监控系统功能 二、Zabbix 监控系统概述 1、Zabbix 概念 2、Zabbix 主要特点 3、Zabbix 主要功能 4、Zabbix 监控对象 5、Zabbix 主要程序 6、Zabbix 监控模式 7、Zabbix 运行机制 8、Zabbix 监控原理 9、Zabbix 主…

Mac 下安装PostgreSQL经验

使用homebrew终端软件管理器去安装PostgreSQL 如果没有安装brew命令执行以下命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 沙果开源物联网系统 SagooIoT | SagooIoT 1.使用命令安装postgreSQL brew i…

java的单元测试和反射

单元测试 就是针对最小的功能单元&#xff0c;编写测试代码对其进行正确性测试 Junit单元测试框架&#xff1a; 可以用来对方法进行测试 有点&#xff1a; 可以灵活的编写测试代码&#xff0c;可以针对某个方法进行测试&#xff0c;也支持一键完成对全部方法的自动发测试&a…

开源王者!全球最强的开源大模型Llama3发布!15万亿数据集训练,最高4000亿参数,数学评测超过GPT-4,全球第二!

本文原文来自DataLearnerAI官方网站&#xff1a; 开源王者&#xff01;全球最强的开源大模型Llama3发布&#xff01;15万亿数据集训练&#xff0c;最高4000亿参数&#xff0c;数学评测超过GPT-4&#xff0c;全球第二&#xff01; | 数据学习者官方网站(Datalearner)https://ww…

使用Python比较两张人脸图像并获得准确度

使用 Python、OpenCV 和人脸识别模块比较两张图像并获得这些图像之间的准确度水平。 一、原理 使用Face Recognition python 模块来获取两张图像的128 个面部编码&#xff0c;并比较这些编码。比较结果返回 True 或 False。如果结果为True &#xff0c;那么两个图像将是相同的…

2024团体程序设计天梯赛L1-104 九宫格

题目链接L1-104 九宫格 #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int n, mapp[10][10], a[10]; int dx[10]{0, 1, 1, 1, 4, 4, 4, 7, 7, 7}; int dy[10]{0, 1, 4, 7, 1, 4, 7, 1, 4, 7}; b…

2、关于数据库事务那些事

目录 1、什么是事务&#xff1f; 2、介绍下数据库事务&#xff1f; 3、并发事务会带来什么问题&#xff1f; 3.1、不可重复读和幻读有什么区别&#xff1f; 4、数据库隔离级别有哪几种&#xff1f; 5、MySQL默认使用隔离级别是啥&#xff1f; 6、如何控制并发事务&#…