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

目录

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

思路

代码

题目链接:55. 跳跃游戏

思路

代码

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

思路

代码

总结


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

思路

        每天可以重复买卖,所以只需要计算每天的净利润,只加正数即可。想明白了就很简单。

代码

class Solution {
public:int maxProfit(vector<int>& prices) {int result = 0; // 记录利润和for (int i = 0; i < prices.size() - 1; i++) {// 记录每天的净利润,但只收集正数int profit = prices[i + 1] - prices[i];if (profit > 0) {result += profit;}}return result;}
};

题目链接:55. 跳跃游戏

思路

        数组中的数字代表可以跳跃的最大范围,例如3,可以选择1,2,3。不用跳跃来思考,用覆盖范围,主要覆盖范围足以达到最后一个下标,就说明可以达到。在遍历数组过程中,以覆盖范围为上限,并且每次更新最大的覆盖范围。

代码

class Solution {
public:bool canJump(vector<int>& nums) {// 数组长度为1,直接到达终点,返回trueif (nums.size() == 1)return true;int cover = 0; // 覆盖范围// 遍历数组,只在覆盖范围内遍历for (int i = 0; i <= cover; i++) {// 取最大覆盖范围cover = (i + nums[i]) > cover ? (i + nums[i]) : cover;// 如果可以覆盖最后一个元素,说明可以到达if (cover >= nums.size() - 1)return true;}return false;}
};

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

思路

        与55.跳跃游戏不同的是还需要记录最小步数,因为每一步跳跃的步数不确定,还是从覆盖范围下手。只不过需要两个覆盖范围,一个是当前的覆盖范围,另一个是下一步的覆盖范围。

        在遍历当前覆盖范围时,记录下一步的最大覆盖范围,并进行更新。

        如果下标移动到了当前覆盖的最大范围处,则步数加一,当前覆盖范围更新为下一次的覆盖范围,继续遍历。

        直至遍历到数组的倒数第二位结束遍历。不到最后是因为最后可以一步一定可以达到,题目给的都是可以到达的情况,所以只用关心步数即可。

代码

class Solution {
public:int jump(vector<int>& nums) {int curDistance = 0;int nextDistance = 0;int step = 0;// 数组遍历到倒数第二位// 如果覆盖范围刚好只能达到倒数第二位,步数加一即可达到最后一位// 如果可以覆盖到最后一位,则结束,之前记录的步数就是最小步数for (int i = 0; i < nums.size() - 1; i++) {// 下一步可以跳多远,这里记录的是在这个区间内最大的跳跃范围nextDistance = max(i + nums[i], nextDistance);// 如果下标到了最大覆盖范围,说明该往下跳一步了if (i == curDistance) {// 更新覆盖范围,也是下一步最大的跳跃范围curDistance = nextDistance;step++; // 步数加1}}return step;}
};

总结

        ①第一题与昨天的最长子序列类似,但是刚开始不好理解题意,一天内可重复买卖是关键,突破点在于记录每天的盈利,只累加正数

        ②第二第三题也是思路的转变,从每步的跳跃,转变为每次的覆盖范围,这样转变可以避免讨论每次跳跃了几步

        ③目前来看,贪心问题难点不在于代码,而在于思路,想通的话代码写起来很简单

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

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

相关文章

Spring JdbcTemplate基本使用

1. JdbcTemplate概述 它是spring框架中提供的一个对象&#xff0c;是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibermateTemplate&#xff0c;操作nosql数据库的RedisTemplate&#xff0c;操作消息队…

p2949(简单反悔贪心)

题目链接 #include<bits/stdc.h> using namespace std; const int N2e520; using ll long long; long long ans; struct node{int x,y;bool operator < (node p) const{return x<p.x; //按截至时间从小到大排序 } }a[N]; long long ti; int main() {map<int,in…

Hadoop学习总结(Hive的远程服务、数据模型操作、数据操作)

在启动hive时要先启动Hadoop。 在SecurityCRT 或者在 Xshell 进行虚拟机链接 &#xff08;这里使用Xshell &#xff09; 一、Hive 的管理 1、CLI 方式 &#xff08;1&#xff09;启动 Hive 直接输入 hive &#xff08;2&#xff09;退出 直接输入以下一条命令&#xff0…

预付费电表管理系统:WEB端的高效解决方案

1.系统概述 预付费电表管理系统&#xff0c;尤其是基于WEB端的版本&#xff0c;是一种现代化的电力管理工具&#xff0c;旨在提高能源效率&#xff0c;优化电费支付流程&#xff0c;并提供实时的用电数据监控。它通过互联网技术&#xff0c;使得用户能够在线充值、查询电量、远…

如何排查oracle连接数不足问题

最近oracle数据库莫名其妙的连接不上&#xff0c;plsql连接报错&#xff0c;sqlplus终端打开时提示ora-00020错误&#xff0c;下面记录一下本次问题的解决过程。 1.sqlplus 登录数据库 show parameter processes;–当前默认配置的process是多少。 select count(*) from v$pr…

开源全方位运维监控工具:HertzBeat

HertzBeat&#xff1a;实时监控系统性能&#xff0c;精准预警保障业务稳定- 精选真开源&#xff0c;释放新价值。 概览 HertzBeat是一款深受广大开发者喜爱的开源实时监控解决方案。它以其简洁直观的设计理念和免安装Agent的特性&#xff0c;实现了对各类服务器、数据库及应用…

一次性找出数组中的最小值和次小值

一次性找出数组中的最小值和次小值 代码&#xff1a; #include <stdio.h> int main() {int arr[] {5, 4, 6, 3, 9, 12, 35, 42, 18, 29, 30};int min arr[0], submin arr[0];for (int i 0; i < sizeof(arr) / sizeof(arr[0]); i){if (arr[i] < min){submin m…

Youtube DNN

目录 1. 挑战 2. 系统整体结构 3.召回 4. 排序 5. 训练和测试样本的处理 1. 挑战 &#xff08;1&#xff09;规模。很多现有的推荐算法在小规模上效果好&#xff0c;但Youtobe规模很大。 &#xff08;2&#xff09;新颖度。Youtobe语料库是动态的&#xff0c;每秒都会有…

前后端连接完后的各种安全问题

前后端连接完后的各种安全问题&#xff1a; 当我们完成前后端链接后&#xff0c;这只是第一步&#xff0c;接下来各种安全问题才是前后端交互的重中之重。 后端&#xff1a; 一.管理员 当前端把账号密码之类的用户信息传来后端后&#xff0c;我们还需要一个管理员来保存这些…

芯片数字后端设计入门书单推荐(可下载)

数字后端设计&#xff0c;作为数字集成电路设计的关键环节&#xff0c;承担着将逻辑设计转化为物理实现的重任。它不仅要求设计师具备深厚的电路理论知识&#xff0c;还需要对EDA工具有深入的理解和熟练的操作技能。尽管数字后端工作不像前端设计那样频繁涉及代码编写&#xff…

VTK----VTK数据结构详解(几何篇)

在讲VTK的数据结构之前,我们先了解可视化数据的两个特征:离散性、有规则或无规则。 离散性。当我们使用计算机去表示我们的数据时,一般都是基于有限数量的点做信息的采样(或插值),因此可视化的数据是以一种离散的方式表示的。有规则或无规则(也叫结构化或非结构化)。针…

从0开始深入理解Spring(1)--SpringApplication构造

从0开始深入理解Spring-启动类构造 引言: 从本篇开始&#xff0c;打算深入理解Spring执行过程及原理&#xff0c;个人理解极有可能有偏差&#xff0c;评论区欢迎指正错误&#xff0c;下面开始进入正片内容。 ps: springboot版本使用2.4.8 Springboot项目启动时&#xff0c;是通…

PMSM MATLAB

// s-function搭建变参数PMSM模型 永磁同步电机dq轴电感和其内部结构有何关系&#xff1f;​​​​​​​ 矢量控制&#xff0c;SVPWM开关频率一般20kHZ&#xff0c;是不是开关频率提越高控制效果越好&#xff1f;频率提高有没有意义&#xff1f; 一般来说&#xff0c;电机电…

【Leetcode】链表专题

leetcode链表专题 主要根据CSview一个校招刷题准备网站 做这个网站的人真的很厉害&#xff01;进行整理 太困了&#xff0c;一学习就困&#xff0c;来刷刷题 文章目录 leetcode链表专题前言一、leetcode 206.反转链表1.题目描述&#xff1a;2.主要有两种方法&#xff0c;迭代法…

发送钉钉、邮件、手机信息

其中下列部分用到了Hutool中的工具,可先导入Hutool依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>钉钉 public void sendDingDing(PoMaster poMa…

Ugee手写板Ex08 S在不同软件中的设置

手写笔的结构 功能对应于鼠标的作用笔尖鼠标左键上面第一个键鼠标右键&#xff08;效果有时候也不完全等同&#xff09;上面第二个键鼠标中键 以下测试的软件版本 软件版本windows10WPS2024春季16729Office2007SimpleTex0.2.5Ex08 S驱动版本4.2.4.231109 WPS-word ①点击审…

《R语言与农业数据统计分析及建模》学习——创建与访问数据框

1、数据框的概念和特点 数据框是二维的表格形式数据结构&#xff0c;是R语言中最常用的数据结构之一。有如下特点&#xff1a; &#xff08;1&#xff09;异质性&#xff1a;各列不同的数据类型 &#xff08;2&#xff09;命名索引&#xff1a;每列都有一个名称 &#xff08;3&…

开源Windows12网页版HTML源码

源码介绍 开源Windows12网页版HTML源码&#xff0c;无需安装就能用的Win12网页版来了Windows12概念版&#xff08;PoweredbyPowerPoint&#xff09;后深受启发&#xff0c;于是通过使用HTML、CSS、js等技术做了这样一个模拟板的Windows12系统&#xff0c;并已发布至github进行…

go并发编程以及socket通信的理解

go并发编程以及socket通信的理解 文章目录 go并发编程以及socket通信的理解一、管道的简单使用二、go中的socket实现通信 一、管道的简单使用 " golang不是通过共享内存来通信&#xff0c;而是通过通信来共享内存 " 1、go简单初始化 // golang不是通过共享内存来通…

蓝桥杯2024年第十五届省赛真题-小球反弹

以下两个解法感觉都靠谱&#xff0c;并且网上的题解每个人答案都不一样&#xff0c;目前无法判断哪个是正确答案。 方法一&#xff1a;模拟 代码参考博客 #include <iostream> #include <cmath> #include <vector>using namespace std;int main() {const i…