代码随想录算法训练营第三十二天| 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,直接到达终点,返回true
        if (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.mfbz.cn/a/559828.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV——透视变换

前言 ​ 需求&#xff1a; 将一个梯形变为需要的图形&#xff0c;后续需要持续进行映射。让整张图像的所有点位都按照这样的映射关系进行映射。 正文 一、透视变换相关介绍 从名称中可以清楚地看出&#xff0c;透视变换研究是坐标变化之间的关系。这种类型的转换不保留信息…

数据采集技术综合项目实战3(网络爬虫+数据预处理+数据可视化)附带详细步骤说明,干货满满

项目介绍及需求&#xff1a; 本项目主要是通过对b站电影弹幕进行采集并分析。1.获得弹幕高频词生成符合该电影特征、主题、角色等相关字段的词云图&#xff0c;通过词云图的方式对某部电影主题具体化。2.获取用户年内评论发布时间观生成时间的折线图&#xff0c;以便从侧面观察…

HarmonyOS-静态库(SDK)的创建和使用

文章目录 一、静态库&#xff08;SDK&#xff09;二、创建静态库1.新建静态库模块2. 开发静态库内容3. 编译静态库 三、使用静态库1. 配置项目依赖2. 在应用中使用静态库3. 注意事项 四、打包错误1. library引用本地har包错误 一、静态库&#xff08;SDK&#xff09; 在Harmon…

【35分钟掌握金融风控策略6】决策树风控策略开发

目录 ​编辑 决策树 决策树原理 决策树生成 特征选择 决策树生成 决策树剪枝 决策树 决策树&#xff08;Decision Tree&#xff09;是一种强大的分类和预测方法&#xff0c;因其实践起来比较简单且具有较好的解释性&#xff0c;所以在金融风控领域应用广泛。决策树也是…

如何快速提高阿里国际、Shopee和速卖通产品的曝光率?

当卖家完成产品上传后&#xff0c;他们还能做些什么来进一步提升产品的曝光量呢&#xff1f;产品的曝光量无疑对店铺的销量具有显著影响&#xff0c;那么&#xff0c;如何有效地提升产品曝光量呢&#xff1f;又有哪些快速且实用的方法呢&#xff1f;今天&#xff0c;我们就来深…

【力扣 Hot100 | 第五天】4.20(回文链表)

1.回文链表 1.1题目 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例一&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例二&#xff1a; 输入…

智慧城市标准化白皮书(2022版)发布

2022年7月25日&#xff0c;国家智慧城市标准化总体组2022年度全体会议召开期间&#xff0c;《智慧城市标准化白皮书&#xff08;2022版&#xff09;》正式发布。 城市作为一个复杂巨系统&#xff0c;是多元主体融合及多元活动集聚的复杂综合体。城市的运行发展关联 到发展、治…

康耐视visionpro-Cog2DSymbolTool操作操作工具详细说明

Cog2 DSymbolToolI功能说明&#xff1a; 二维码读取工具 Cog2 DSymbolTool操作说明&#xff1a; ①.打开工具栏&#xff0c;双击或点击鼠标拖拽添加Cog2DSymbolTool工具 ②.添加输入图像&#xff0c;右键“链接到”或以连线拖拽的方式选择相应输入图像。 ③.代码系统&#x…

Pytest精通指南(22)钩子函数-重复执行(pytest-repeat)

文章目录 前言应用场景插件安装参数分析使用方式一&#xff1a;命令行使用方式二&#xff1a;配置文件使用方式三&#xff1a;装饰器 前言 pytest框架中的**重复测试&#xff08;pytest-repeat&#xff09;**插件的用途是允许在运行测试用例时进行多次循环&#xff0c;以更全面…

2024年开通最新版云开发cms步骤,开始开发微信小程序前的准备工作,认真看完奥!

小程序官方有改版了&#xff0c;搞得石头哥不得不紧急的再新出一版&#xff0c;教大家开通最新版的cms网页管理后台 一&#xff0c;技术选型和技术点 1&#xff0c;小程序前端 wxml css JavaScript MINA原生小程序框架 2&#xff0c;数据库 云开发 云数据库 云…

中毒的电脑插U盘也会中毒吗?U盘中毒了不显示数据怎么办

随着数字技术的快速发展&#xff0c;U盘作为数据存储和传输的重要工具&#xff0c;广泛应用于我们的日常生活和工作中。然而&#xff0c;U盘在带来便利的同时&#xff0c;也带来了潜在的安全风险。当一台中毒的电脑插入U盘时&#xff0c;U盘是否也会被感染&#xff1f;如果U盘中…

PHP 爬虫如何配置代理 IP(CURL 函数)

在 PHP中 配置代理IP&#xff0c;可以通过设置 CURL 库的选项来实现&#xff0c;代码如下&#xff1a; 当然你要有代理ip来源&#xff0c;比如我用的这个 代理商 &#xff0c;如果想服务稳定不建议找开源代理池&#xff0c;避免被劫持。 <?php // 初始化cURL会话 $ch cu…

C++中的stack(容器适配器)

目录 一、成员函数 一、构造函数 二、入栈 三、出栈 四、判空 empty () 五、栈大小 size 六、取栈顶元素 top 七、入栈 emplace 八、交换函数 swap 二、非成员函数重载 一、关系运算符重载 二、交换函数 C中的stack不再是容器&#xff0c;而是容器适配器 注意&a…

[InternLM训练营第二期笔记]4. XTuner 微调 LLM:1.8B、多模态、Agent

该系列是上海AI Lab举行的书生 浦语大模型训练营的相关笔记部分。 该笔记是第四节课&#xff0c;学习大语言模型微调的基本概念&#xff0c;以及利用XTuner工具进行微调。 0. 什么是LLM中的微调 0.1 两种Finetune范式 微调的目的是为了让foundation模型在特定的领域更好地发挥…

力扣练习题(2024/4/18)

1不相交的线 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在&#xff0c;可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线&#xff0c;这些直线需要同时满足&#xff1a; nums1[i] nums2[j]且绘制的直线不与任何其他连线&#xff08;非水平线…

mysql按季度统计数据

最近遇到按表里得交付时间换成季度取统计&#xff0c;如下&#xff1a; select sp.Id,sp.title,QUARTER(sp.expected_delivery_time) dateStr,CONCAT(DATE(MIN(sp.expected_delivery_time)),至,DATE(MAX(sp.expected_delivery_time))) dateStr2,sp.DemandType,sp.IndustryGrou…

【人工智能基础】状态空间搜索

状态空间法 状态空间&#xff1a;一个问题全部可能的状态以及其关系的集合。 状态空间图&#xff1a;以图的形式表示问题的状态空间&#xff0c;节点对应状态&#xff0c;边对应状态转移算子&#xff0c;边上的权对应转移所需的代价 问题的解&#xff1a;是从最开始状态到目…

BP使用和弱口令漏洞

目录 一、BP使用 1.BP设置 2.Proxy 3.Reapter 4.Decord 5.Intruder 二、弱口令爆破 1.服务弱口令爆破 2.验证码绕过 一、BP使用 1.BP设置 设置代理的监听端口: 这里设置为本机的9090端口 2.Proxy 浏览器要挂代理&#xff0c;设置为本机的9090端口 打开拦截功能 当浏览…

Youtube DNN

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

Windows如何安装JDK

JDK和JRE简介 JDK&#xff1a;Java Development ToolKit java开发工具包&#xff0c;包含JRE针对java程序开发者 JRE&#xff1a;Java Runtime Environment java程序的运行环境针对java使用者来说 下载JDK&#xff0c;进入官网下载 Oracle官网 双击下载好之后的exe文件&#…