代码随想录Day32 | 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

代码随想录Day32 | 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

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

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

文档讲解:代码随想录
视频讲解: 贪心算法也能解决股票问题!LeetCode:122.买卖股票最佳时机 II
状态

考虑买和卖的时机,在峰谷买,在峰顶卖。当我们的数组一直降序那就不买,直到出现上升买入,然后如果一直上升就不卖,直到出现下降卖出
在这里插入图片描述

//当下降不买
//当下一个大,开始买入
//当买入后,开始下降卖出
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        //返回的利润
        int res = 0;
        //买入股票
        int buy = -1;
        //注意边界
        for(int i=0;i<prices.size()-1;i++)
        {
            if(prices[i] > prices[i+1] && buy == -1)
            {
                continue;
            }
            if(prices[i] > prices[i+1] && buy != -1)
            {
                
                res += prices[i]-buy;
                buy = -1;
            }
            if(prices[i] < prices[i+1] && buy == -1)
            {
                buy = prices[i];
            }
            //考虑最后一个数的影响
            if(i == prices.size()-2 && prices[i+1] >= prices[i] && buy != -1)
            {
                cout << buy << " ";
                res += prices[i+1] - buy;
                buy = -1;
            }
        }
        return res;
    }
};
  1. 贪心 – 谨慎购买
    类似于前缀和,当前位置的利润等于前面利润的总和+新增的利润,那么当前最大的利润就是前面的连续正数利润之和。我们可以这样想,当遇到第二天比第一天大的就卖掉,然后如果第三天比第二天还大那么就买回第二天然后第三天卖掉。这样一来相当于我们会收取所有利润为正数的。结果一定是最大值

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        //返回的利润
        int res = 0;
        for(int i = 1;i<prices.size();i++)
        {
            res += max(prices[i]-prices[i-1],0);
        }
        return res;
    }
};

55.跳跃游戏

文档讲解:代码随想录
视频讲解: 贪心算法,怎么跳跃不重要,关键在覆盖范围 | LeetCode:55.跳跃游戏
状态

每次考虑的是当前节点能否直接跳到终点,如果能够跳到就为true,要注意节点的边界,应当为当前节点跳跃范围内,如果当前节点的跳跃范围变大,那么可以更新。即寻找这个跳跃范围中能够跳跃的最远节点为边界
在这里插入图片描述

//每个点能够跳跃的最大位置是否能够到达终点
class Solution {
public:
    bool canJump(vector<int>& nums) {
        int canJump = 0;
        for(int i = 0;i<=canJump;i++)
        {
            canJump = max(i+nums[i],canJump);
            if(canJump >= nums.size()-1)
            {
                return true;
            }
        }
        return false;
    }
};

45.跳跃游戏II

文档讲解:代码随想录
视频讲解: 贪心算法,最少跳几步还得看覆盖范围 | LeetCode: 45.跳跃游戏 II
状态

最小跳跃次数,就是在当前范围中,选择那一个使得修改边界最大的下标跳过去,那么就是遍历完这个当前范围,那么跳跃1次,同时更新当前范围为记录的最大边界,进行下一次的跳跃等待。如果下一的跳跃即用来更新边界的数超过了末尾,那么直接退出即可。
在这里插入图片描述

//题目保证可以跳到
//最小次数,就是在之前范围中能够更新边界的最大位置,直接从当前节点跳到那个位置
class Solution {
public:
    int jump(vector<int>& nums) {
        int canJump = 0;
        int jumptimes = 0;
        //记录当前遍历的边界
        int board = 0;
        if(nums.size()==1) return jumptimes;
        for(int i=0;i<=nums.size()-1;i++)
        {
            canJump = max(nums[i]+i,canJump);
            if(i == board)
            {
                board = canJump;
                jumptimes++;
                if(canJump >= nums.size()-1) break;
            }
        }
        return jumptimes;
    }
};

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

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

相关文章

【笔记】顺利通过EMC试验(16-41)-视频笔记

目录 视频链接 P1:电子设备中有哪些主要骚扰源 P2:怎样减小DC模块的骚扰 P3:PCB上的辐射源究竟在哪里 P4:怎样控制PCB板的电磁辐射 P5:多层线路板是解决电磁兼容问题的简单方法 P6:怎样处理地线上的裂缝 P7:怎样降低时钟信号的辐射 P8:为什么IO接口的处理特别重要 P9…

ARIMA模型:Python实现

ARIMA模型&#xff1a;Python实现 自回归移动平均模型&#xff08;ARIMA&#xff09;是一种经典的时间序列分析和预测方法。前期已介绍了ARIMA的概念和公式&#xff0c;本文将介绍ARIMA模型的理论基础&#xff0c;并提供详细的Python代码实现&#xff0c;帮助读者了解如何应用…

VS生成报错:MSB8036 The Windows SDK version 8.1 was not found.找不到 Windows SDK 版本 8.1

目录 一、查看本机SDK二、 解决法一&#xff1a;适配本电脑的SDK法二&#xff1a;下载SDK 8.1 VS生成报错&#xff1a;MSB8036 找不到 Windows SDK 版本 8.1。请安装所需版本的 Windows SDK&#xff0c;或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更…

用ChatGPT写申请文书写进常春藤联盟?

一年前&#xff0c;ChatGPT 的发布引发了教育工作者的恐慌。现在&#xff0c;各大学正值大学申请季&#xff0c;担心学生会利用人工智能工具伪造入学论文。但是&#xff0c;聊天机器人创作的论文足以骗过大学招生顾问吗&#xff1f; ChatGPT简介 ChatGPT&#xff0c;全称聊天生…

C++ 之LeetCode刷题记录(二十)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 110. 平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二…

构建外卖跑腿系统:技术实现与架构设计

在当今数字化时代&#xff0c;外卖跑腿系统已成为人们生活中不可或缺的一部分。本文将探讨如何利用先进的技术和架构设计&#xff0c;开发一个高效、可靠的外卖跑腿系统。 1. 技术选型 在开发外卖跑腿系统之前&#xff0c;我们需要仔细选择适合的技术栈&#xff0c;以确保系…

[C++13]:stack queue priority_queue 模拟实现

stack && queue && priority_queue 模拟实现 一.stack1.概念&#xff1a;2.使用&#xff1a;3.模拟实现&#xff1a;一些题目&#xff1a;1.最小栈&#xff1a;2.栈的压入弹出序列&#xff1a;3.逆波兰表达式求值&#xff1a; 二.queue1.概念&#xff1a;2.使用…

SpringBoot之时间数据前端显示格式化

背景 在实际我们通常需要在前端显示对数据操作的时间或者最近的更新时间&#xff0c;如果我们只是简单的使用 LocalDateTime.now()来传入数据不进行任何处理那么我们就会得到非常难看的数据 解决方式&#xff1a; 1). 方式一 在属性上加上注解&#xff0c;对日期进行格式…

Web3 游戏开发者的数据分析指南

作者&#xff1a;lesleyfootprint.network 在竞争激烈的 Web3 游戏行业中&#xff0c;成功不仅仅取决于游戏的发布&#xff0c;还需要在游戏运营过程中有高度的敏锐性&#xff0c;以应对下一次牛市的来临。 人们对 2024 年的游戏行业充满信心。A16Z GAMES 和 GAMES FUND ONE …

探索IOC和DI:解密Spring框架中的依赖注入魔法

IOC与DI的详细解析 IOC详解1 bean的声明2 组件扫描 DI详解 IOC详解 1 bean的声明 IOC控制反转&#xff0c;就是将对象的控制权交给Spring的IOC容器&#xff0c;由IOC容器创建及管理对象。IOC容器创建的对象称为bean对象。 要把某个对象交给IOC容器管理&#xff0c;需要在类上…

深度学习知识

context阶段和generation阶段的不同 context阶段&#xff08;又称 Encoder&#xff09;主要对输入编码&#xff0c;产生 CacheKV(CacheKV 实际上记录的是 Transformer 中 Attention 模块中 Key 和 Value 的值&#xff09;&#xff0c;在计算完 logits 之后会接一个Sampling 采…

【MySQL进阶】InnoDB引擎存储结构和架构

文章目录 逻辑存储结构架构内存结构Buffer Pool&Adaptive Hash IndexChange BufferLog Buffer 磁盘结构 逻辑存储结构 表空间&#xff08;Tablespaces&#xff09;&#xff1a;InnoDB使用表空间来管理存储表和索引的数据文件。每个表空间包含一个或多个数据文件&#xff0c…

【学网攻】 第(9)节 -- 路由器使用以及原理

系列文章目录 目录 系列文章目录 文章目录 前言 一、路由器是什么&#xff1f; 二、实验 1.引入 总结 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4)节 -- 交换机划分Vlan…

解锁一些SQL注入的姿势

昨天课堂上布置了要去看一些sql注入的案例&#xff0c;以下是我的心得&#xff1a; ​​​​​​​ ​​​​​​​ ​​​​​​​ 1.新方法 打了sqli的前十关&#xff0c;我发现一般都是联合查询&#xff0c;但是有没有不是联合查询的方法呢&#xf…

Python基础学习 -05 基本类型

Python3 基本数据类型 Python 中的变量不需要声明。每个变量在使用前都必须赋值&#xff0c;变量赋值以后该变量才会被创建。 在 Python 中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们所说的"类型"是变量所指的内存中对象的类型。 等号&…

Nodejs前端学习Day1_补档

我给day1搞没了&#xff0c;还是觉得该补一个&#xff0c;有用 文章目录 前言一、学习目标二、学习目录三、为什么JavaScript代码可以在浏览器中运行四、为什么JavaScript可以操作DOM和BOM五、浏览器中的JavaScript运行环境总结 前言 补档 一、学习目标 二、学习目录 三、为什…

苹果备忘录删除了怎么恢复?看这,5分钟学会4种方法

在日常使用中&#xff0c;我们有时会不小心删除苹果备忘录中的重要内容。这些内容可能是重要的提醒、重要的日程安排&#xff0c;也可能是珍贵的回忆。一旦删除&#xff0c;可能会对我们的生活和工作带来很大的困扰。那么&#xff0c;苹果备忘录删除了怎么恢复呢&#xff1f;本…

小屏幕大作用 电子墨水屏桌牌、门牌—构建绿色办公环境新途径

在当今信息化社会&#xff0c;电子设备已经深入到我们生活的方方面面。其中&#xff0c;电子墨水屏作为一种特殊的显示技术&#xff0c;因其低功耗、护眼、节能环保等特点&#xff0c;受到了广泛欢迎。本文将探讨电子墨水屏在构建绿色办公环境中的重要作用&#xff0c;特别是电…

上位机图像处理和嵌入式模块部署(python opencv)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们谈到了qt&#xff0c;谈到了opencv&#xff0c;也谈到了嵌入式&#xff0c;但是没有说明python在这个过程当中应该扮演什么样的角色。open…

无线测温在线监测系统工作原理与产品选型

摘要&#xff1a;本文首先介绍了无线测温在线监测系统的基本工作原理以及软硬件组成&#xff0c;重点介绍了在线监测的无线测温技术特点。在此研究基础上&#xff0c;探讨了无线测温在线监测系统在实际工作场景中的应用案例&#xff0c;证明了其在温度检测方面的重要应用价值。…