算法D32 | 贪心算法2 | 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

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

本题解法很巧妙,大家可以看题思考一下,在看题解。 

代码随想录P

只收集每天的正利润,利润可以每天分解。

Python:

class Solution:def maxProfit(self, prices: List[int]) -> int:if len(prices)<2: return 0maxProfit = 0curProfit = 0for i in range(1, len(prices)):curProfit = prices[i] - prices[i-1]if curProfit > 0:maxProfit += curProfitif curProfit < 0:curProfit = 0return maxProfit

C++:

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

55. 跳跃游戏 

本题如果没接触过,很难想到,所以不要自己憋时间太久,读题思考一会,没思路立刻看题解 

代码随想录

关键思路:

其实跳几步无所谓,关键在于可跳的覆盖范围!

不一定非要明确一次究竟跳几步,每次取最大的跳跃步数,这个就是可以跳跃的覆盖范围。

这个范围内,别管是怎么跳的,反正一定可以跳过来。

Python:

Python不支持动态修改for循环中的变量。注意和C++版本的对比。

class Solution:def canJump(self, nums: List[int]) -> bool:if len(nums)==1: return Truecover = 0for i in range(len(nums)):if i<=cover:cover = max(i+nums[i], cover)if cover >= len(nums)-1:return True            return False

C++:

class Solution {
public:bool canJump(vector<int>& nums) {if (nums.size()==1) return true;int cover = 0;for (int i=0; i<=cover; i++) { // for循环里的cover是动态修改的cover = max(nums[i]+i, cover);if (cover >= nums.size()-1) return true;}return false; }
};

45.跳跃游戏II 

本题同样不容易想出来。贪心就是这样,有的时候 会感觉简单到离谱,有时候,难的不行,主要是不容易想到。

代码随想录

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

整体最优:一步尽可能多走,从而达到最少步数。

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

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

这里还是有个特殊情况需要考虑,当移动下标达到了当前覆盖的最远距离下标时

  • 如果当前覆盖最远距离下标不是是集合终点,步数就加一,还需要继续走。
  • 如果当前覆盖最远距离下标就是是集合终点,步数不用加一,因为不能再往后走了。

Python:

class Solution:def jump(self, nums: List[int]) -> int:n = len(nums)if n==1: return 0cur_cover = next_cover = 0ans = 0for i in range(n):next_cover = max(nums[i]+i, next_cover)if i==cur_cover:ans += 1cur_cover = next_coverif next_cover >= n-1:breakreturn ans

C++:

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

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

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

相关文章

C++的晨曦之旅:开启编程的新篇章

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 一、 命名空间 在 C/C 中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0…

龙跃金三银四,程序员如何翻云覆雨赢取心仪offer

春天的脚步渐近&#xff0c;万物复苏&#xff0c;生机盎然。对于许多程序员来说&#xff0c;一年中最繁忙、最重要的面试季节也随之而来。金三银四&#xff0c;即三月和四月&#xff0c;被广大程序员视为求职的黄金时期。在这两个月里&#xff0c;各大公司纷纷开放招聘&#xf…

div在vue的组件之中如何设置这个字体的颜色和样式大小

在Vue组件中设置<div>的字体颜色和样式大小可以通过两种主要方式实现&#xff1a;通过内联样式&#xff08;inline styles&#xff09;或者通过CSS类&#xff08;CSS classes&#xff09;。 使用内联样式 在Vue模板中直接在元素上使用style属性来设置样式。这种方法适用…

Android Shadow插件化框架分析与集成(一)

一、shadow源码导入及分析 1、下载项目源码 2、导入到Android studio 3、设置jdk及sdk版本 包/应用描述类型sample-constant公共字符串常量libsample-host宿主应用applicationsample-host-lib宿主应用依赖包libsample-manager是插件管理器的动态实现,主要负责加载插件和安装…

【Android开发】01-第一个Android APP

一、改MainActivity class MainActivity : AppCompatActivity() {/*因Android的app有生命周期&#xff0c;故入口是OnCreate而不是main函数*/override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main…

071:vue+cesium 实现下雨效果

第071个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中实现下雨效果,这里使用着色器来实现实例特效。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共120行)着色代码实现心得:专栏目标示例效果

【笔记】深度学习入门:基于Python的理论与实现(六)

深度学习 深度学习是加深了层的深度神经网络 加深网络 本节我们将这些已经学过的技术汇总起来&#xff0c;创建一个深度网络&#xff0c;挑战 MNIST 数据集的手写数字识别 向更深的网络出发 基于33的小型滤波器的卷积层。激活函数是ReLU。全连接层的后面使用Dropout层。基…

初阶数据结构:栈与队列的扩展补充

目录 1. 栈与队列练习题1.1 栈的括号匹配问题1.2 用队列来实现栈1.3 用栈来实现队列1.4 扩展&#xff1a;循环队列 1. 栈与队列练习题 1.1 栈的括号匹配问题 题目信息&#xff1a; 题目链接&#xff1a; 括号匹配问题 思路&#xff1a; 利用栈的后进先出特性来实现括号的匹配 …

网络编程day3

1.思维导图 2.TCP机械臂测试 tcpCli.c #include<myhead.h> #define SER_IP "192.168.125.162" //服务器IP #define SER_PORT 7777 //服务器端口#define CLI_IP "192.168.159.144" //客户端IP #define CLI_PORT 9999 //客户端端口号int…

婚姻情感 17

婚姻情感 17 怎么和女生聊天&#xff1f;让对方感兴趣给对方好体验深层次的聊天刷心疼长得帅和强大的区别从我到我们 追女生的思路 怎么和女生聊天&#xff1f; 在和女生互动的时候就很难去进入一种很深层次的一个连接&#xff0c;就是说很多时候我们和女生互动总是停留在第三…

底层自行实现——监督学习算法(1线性回归)

1.1 简单线性回归 1. 简介 简单线性回归&#xff08;SLR - Simple Linear Regression&#xff09;模型可以表示为&#xff1a; Y β 0 β 1 X ϵ Y \beta_0 \beta_1X \epsilon Yβ0​β1​Xϵ Y Y Y&#xff1a;因变量或目标变量。 X X X&#xff1a;自变量或解释变量。…

考取ORACLE数据库OCP的必要性 Oracle数据库

OCP证书是什么&#xff1f; OCP&#xff0c;全称Oracle Certified Professional&#xff0c;是Oracle公司的Oracle数据库DBA&#xff08;Database Administrator&#xff0c;数据库管理员)认证课程。这是Oracle公司针对数据库管理领域设立的一项认证课程&#xff0c;旨在评估和…

C++ 学习笔记(Structured bindings)

C 学习笔记&#xff08;Structured bindings&#xff09; 这个特性是 C17 引入的&#xff0c;个人认为主要是解决如何让函数返回多个值的问题。在这之前&#xff0c;我们一般用 std::pair 或者 std::tuple 来返回多个值。比如下面的例子&#xff1a; std::tuple<int, int …

网盘拉新项目去哪找平台对接?推荐6个一手渠道接单!

在当今这个充满竞争的时代&#xff0c;网盘项目的寻找与对接成为了许多团队关注的焦点。那么&#xff0c;我们应该如何找到那些既靠谱又有潜力的项目呢&#xff1f;经过深入研究和全网检索&#xff0c;我为大家盘点了6个值得一试的接单渠道&#xff0c;助力网盘推广团队高效寻找…

matlab工具包

matlab安装yalmip和cplex出错 - 知乎 (zhihu.com) Cplex的安装和使用实例-CSDN博客 一条龙教程&#xff1a;Matlab下使用yalmip(工具箱)cplex&#xff08;求解器&#xff09;_使用yalmip和cplex求解器进行建模和求解的步骤如下:-CSDN博客 啊啊啊&#xff0c;好开心&#xff…

Mint_21.3 drawing-area和goocanvas的FB笔记(二)

一、goocanvas安装 Linux mint 21.3 库中带有 libgoocanvas-2.0-dev, 用sudo apt install libgoocanvas-2.0-dev 安装&#xff0c;安装完成后&#xff0c;检查一个 /usr/lib/x86_64-linux-gnu 下是否有libgoocanvas.so的软件链接。如果没有&#xff0c;或是 .so.x 等类似后面…

事务Transaction简写为tx的原因

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Transaction简写的由来 数据库事务Transaction通常被简写为tx。让人疑惑的是&#xff1a;这个单词本身没有字母x为何又将其简写成了tx呢&#xff1f; 第一种可能 Transac…

SpringBoot整合ActiveMQ步骤

SpringBoot整合ActiveMQ主要涉及以下几个步骤&#xff1a; 添加依赖&#xff1a;在SpringBoot项目的pom.xml文件中添加ActiveMQ的依赖。 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-spring</artifactId><ver…

“平民化”非结构数据处理

在全球信息产业高速发展的背景下&#xff0c;IDC预测&#xff0c;2018 到 2025 年之间&#xff0c;全球产生的数据量将会从 33 ZB 增长到 175 ZB&#xff0c; 复合增长率27%&#xff0c;其中超过 80%的数据都会是处理难度较大的非结构化数据&#xff0c;如文档、文本、图形、图…

搜索题解

单词方阵 - 洛谷 思路&#xff1a;在字符方阵中找到y并将其坐标存入数组&#xff0c;再找其八个方向是否有目标字符&#xff0c;有的话就深搜一个方向&#xff0c;能搜完就将数组标记&#xff0c;最好标记的就输入字符&#xff0c;没标记的就输出*。 代码如下&#xff1a; #…