代码随想录算法训练营第三二天 | 买卖股票、跳跃游戏

目录

  • 买卖股票的最佳时机II
  • 跳跃游戏
  • 跳跃游戏ii

LeetCode 122.买卖股票的最佳时机II
LeetCode 55. 跳跃游戏
LeetCode 45.跳跃游戏II

买卖股票的最佳时机II

只有一只股票!

当前只有买股票或者卖股票的操作。

最终利润是可以分解的:把利润分解为每天为单位的维度。

根据 prices 可以得到每天的利润序列:(prices[i] - prices[i - 1])…(prices[1] - prices[0])。

在这里插入图片描述
其实我们需要收集每天的正利润就可以,收集正利润的区间,就是股票买卖的区间,而我们只需要关注最终利润,不需要记录区间。

那么只收集正利润就是贪心所贪的地方!

局部最优:收集每天的正利润,全局最优:求得最大利润。

class Solution {public int maxProfit(int[] prices) {int result = 0;for (int i = 1; i < prices.length; i++) {result += Math.max(prices[i] - prices[i - 1], 0);}return result;}
}

跳跃游戏

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

跳几步无所谓,宗旨是 跳跃覆盖范围究竟可不可以覆盖到终点!

贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点。

在这里插入图片描述
i 的移动范围: max cover + i
判断 max cover >= nums.length - 1 ? 直接 return true;

class Solution {public boolean canJump(int[] nums) {int cover = 0;if (nums.length == 1) return true;for (int i = 0; i <= cover; i++) {cover = Math.max(cover, i + nums[i]);if (cover >= nums.length - 1) return true;}return false;}
}

这道题目关键点在于:不用拘泥于每次究竟跳几步,而是看覆盖范围,覆盖范围内一定是可以跳过来的,不用管是怎么跳的。

跳跃游戏ii

本题要计算最少步数。

局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。整体最优:一步尽可能多走,从而达到最少步数。

但在写代码的时候还不能真的能跳多远就跳多远,那样就不知道下一步最远能跳到哪里了。

真正解题的时候,要从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最少步数!

这里需要统计两个覆盖范围,当前这一步的最大覆盖下一步最大覆盖

在这里插入图片描述
图中覆盖范围的意义在于,只要红色的区域,最多两步一定可以到!

移动下标达到了当前覆盖的最远距离下标时,步数就要加一,来增加覆盖距离。最后的步数就是最少步数。

class Solution {public int jump(int[] nums) {int curCover = 0;int nextCover = 0;int result = 0;if (nums.length == 1) return 0;for (int i = 0; i < nums.length; i++) {nextCover = Math.max(nextCover, i + nums[i]);// 更新下一步覆盖最远距离下标if (i == curCover) { // 遇到当前覆盖最远距离下标result++;curCover = nextCover;  //更新当前覆盖最远距离下标if (nextCover >= nums.length - 1) break;}}return result;}
}

理解本题的关键在于:以最小的步数增加最大的覆盖范围,直到覆盖范围覆盖了终点

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

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

相关文章

变分自编码器(VAE)PyTorch Lightning 实现

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

SAP PP学习笔记- 豆知识02 - 品目要谁来维护?怎么决定更不更新品目的数量金额?

其实都是在品目类型的Customize中设定的。 咱们这里简单试着说一下什么场景使用。 1&#xff0c;SAP中品目有很多View&#xff0c;都要由哪些部门来维护呢&#xff1f; 其实就是谁用谁维护呗。 在新建一个品目的时候&#xff0c;品目Type本身就决定了该品目要由哪些部门来维…

数据结构(4) 链表(链式存储)

链表&#xff08;链式存储&#xff09; 单链表定义基本操作的实现单链表的插入按位序插入指定节点的前插指定节点的后插 单链表的删除 小结 单链表 定义 顺序表优点:可随机存取&#xff0c;存储密度高&#xff0c;缺点:要求大片连续空间&#xff0c;改变容量不方便。 单链表优…

高数总结(4

目录 1.总结&#xff1a;小结&#xff1a; 1.总结&#xff1a; 小结&#xff1a; 关注我给大家分享更多有趣的知识&#xff0c;以下是个人公众号&#xff0c;提供 ||代码兼职|| ||代码问题求解|| 由于本号流量还不足以发表推广&#xff0c;搜我的公众号即可&#xff1a;

【ASP.NET Core 基础知识】--最佳实践和进阶主题--性能调优和缓存

一、性能调优 在 ASP.NET Core 中进行性能调优&#xff0c;代码优化是至关重要的一部分。以下是一些常见的 ASP.NET Core 代码优化技巧&#xff1a; 减少数据库查询&#xff1a; 尽可能地减少数据库查询次数&#xff0c;可以通过使用合适的 ORM&#xff08;对象关系映射&…

Codeforces Round 926 F. Sasha and the Wedding Binary Search Tree

F. Sasha and the Wedding Binary Search Tree 题意 给定一颗二叉搜索树&#xff0c;规定树上的所有点的点权都在范围 [ 1 , C ] [1, C] [1,C] 内&#xff0c;树上的某些节点点权已知&#xff0c;某些节点点权未知&#xff0c;求出合法的二叉搜索树的数量 思路 由于是二叉搜…

这应该是全网第一篇全面解读OpenAI Sora报告的文章,精读报告:Video generation models as world simulators

今天是2024年2月16号&#xff0c;大年初七&#xff0c;年还没过完&#xff0c;早晨起来朋友圈就被Sora刷屏了。本来以为没啥&#xff0c;都是公众号或者视屏啥的&#xff0c;都没点开看&#xff0c;直到看到我导也发了Sora的文章&#xff0c;我就知道这个事情不简单了。 先来看…

基于Qt数据库项目实现(Sqlite3为例)|考查数据库、表格(QTableView 显示)(进阶)

01 数据库表格(QTableView 显示) 本小节设计一个生活中的例子,使用数据库修改/查询员工的编号、姓名、年龄、性别与照片信息。 本例将数据库的内容显示到 QTableView 上。如果只是简单的显示数据库的内容到QTableView 上,可以使用下面的方法,此方法 QTableView 上可以看…

支付宝沙箱版模拟网站在线完整支付流程(无营业无费用)内网穿透+局域网测试

文章目录 一、介绍1. 支付2. 支付结果 二、前提准备1. 支付宝开放平台2. 内网穿透3. 局域网 三、order微服务1. 依赖、配置2. 工具类1. 二维码生成2. AlipayConfig 3. 端点代码1. /generatepaycode2. /requestpay3. /payresult4. /receivenotify 环境如下 Version手机安卓支付…

力扣代码学习日记二

Problem: 28. 找出字符串中第一个匹配项的下标 文章目录 思路解题方法复杂度代码 思路 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的…

红队笔记Day4 -->多层代理(模拟企业拓扑)

声明&#xff1a;本机文章只用于教育用途&#xff0c;无不良引导&#xff0c;禁止用于从事任何违法活动 前几天的红队笔记的网络拓扑都比较简单&#xff0c;今天就来模拟一下企业的真实网络拓扑&#xff0c;以及攻击方法 一般的大企业的网络拓扑如下&#xff1a;&#xff1a;…

NodeJs事件循环

NodeJs事件循环 能力有限&#xff0c;暂时理解不了。 网上众说纷纭&#xff0c;而且不同的电脑、操作环境、不同的 NodeJS 版本&#xff0c;结果有可能不一样。 建议自己学习的时候别用 Windows 系统&#xff0c;实在没条件使用虚拟机或者 WSL。

基于Springboot+Vue实现的宿舍管理系统

基于SpringbootVue的宿舍管理系统 1.系统相关性介绍1.1 系统架构1.2 设计思路 2.功能模块介绍2.1 用户信息模块2.2 宿舍管理模块2.3 信息管理模块 3. 源码获取以及远程部署 前言&#xff1a; 在现代教育环境中&#xff0c;学生宿舍的管理显得尤为重要&#xff0c;需要一套能…

如何在Windows中配置多个显示器?这里提供详细步骤

Windows可以通过多种方式使用多个显示器&#xff0c;扩展或复制主显示器。你甚至可以关闭主显示器。以下是如何使用简单的键盘快捷键更改辅助显示设置。 使用WindowsP投影菜单 要快速更改Windows 10处理多个显示器的方式&#xff0c;请按WindowsP。屏幕右侧会弹出一个名为“投…

单点登录(SSO,Single Sign-On)

单点登录&#xff08;SSO&#xff0c;Single Sign-On&#xff09;是一种用户身份验证服务&#xff0c;允许用户使用一组登录凭据&#xff08;如用户名和密码&#xff09;访问多个应用程序或系统。SSO旨在提高用户体验和安全性&#xff0c;通过减少用户需要记住的密码数量&#…

CSP-201903-1-小中大

CSP-201903-1-小中大 【坑!】 注意中位数的输出&#xff0c;当中位数为整数时不保留小数点。当两个整数相加后再除以 2 时&#xff0c;结果会自动向下取整&#xff0c;而不是得到一个准确的浮点数结果。需要确保至少有一个操作数是浮点数类型&#xff0c;以便执行浮点数除法&…

图表示学习 Graph Representation Learning chapter1 引言

图表示学习 Graph Representation Learning chapter1 引言 前言1.1图的定义1.1.1多关系图1.1.2特征信息 1.2机器学习在图中的应用1.2.1 节点分类1.2.2 关系预测1.2.3 聚类和组织检测1.2.4 图分类、回归、聚类 前言 虽然我并不研究图神经网络&#xff0c;但是我认为图高效的表示…

阅读笔记12:(全文翻译)Oocyte quality and aging

Oocyte quality and aging 作者:Ali Reza Eftekhari Moghadam, Mahin Taheri Moghadam, Masoud Hemadi, and Ghasem Saki 发表期刊:JBRA Assist Reprod. 发表时间:April 15, 2021 摘要 众所周知,由于卵子的质量和数量随年龄相关的变化,女性的生育能力在生命的第四个十年期…

电脑重装系统之Windows 10 企业版 LTSC 2021

简介 Windows 10 22H2对于我来说太不简洁&#xff0c;最受不了的一点是微软强行硬塞给我一些并没有什么luan用的应用和功能&#xff0c;比如&#xff1a;天气&#xff0c;Onedrive......以及臃肿的ui设计。而且强行进行自动更新&#xff0c;我是真的受不了这个&#xff0c;看着…

leetcode:343.整数拆分

解题思路&#xff1a; 拆分的越多越好&#xff08;暂且认为&#xff09;&#xff0c;尽可能拆成m个近似相等的数&#xff0c;会使得乘积最大 dp含义&#xff1a;将i进行拆分得到最大的积为dp[i] 递推公式&#xff1a;j x dp[i-j](固定j&#xff0c;只通过凑dp[i-j]进而实现所…