代码随想录算法训练营day32 | 贪心算法:122.买卖股票的最佳时机II ,55. 跳跃游戏,45.跳跃游戏II

news2024/12/24 2:06:17

代码随想录算法训练营day32 | 贪心算法:122.买卖股票的最佳时机II ,55. 跳跃游戏,45.跳跃游戏II

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


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

教程视频:https://www.bilibili.com/video/BV1ev4y1C7na/?spm_id_from=333.788&vd_source=ddffd51aa532d23e6feac69924e20891
在这里插入图片描述在这里插入图片描述收集每天的正利润。

class Solution {
    public int maxProfit(int[] prices) {
        int maxProfit = 0;
        int dayProfit = 0;
        for(int i=0;i<prices.length-1;i++){
            dayProfit = prices[i+1]-prices[i];
            if(dayProfit>0){
                maxProfit+=dayProfit;
            }
            //简化版本:maxProfit += Math.max(prices[i+1] - prices[i], 0);
        }
        return maxProfit;
    }
}

55. 跳跃游戏

教程视频:https://www.bilibili.com/video/BV1VG4y1X7kB/?spm_id_from=pageDriver&vd_source=ddffd51aa532d23e6feac69924e20891
在这里插入图片描述这道题目关键点在于:不用拘泥于每次究竟跳几步,而是不断寻找当前覆盖范围,覆盖范围内一定是可以跳过来的,不用管是怎么跳的。

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

例如示例1中:初始位置数字是2,最远位置更新为索引2,可以跳到值为3和1;先看3,此时更新最远位置为4等于数组长度,循环结束。

//基础版
class Solution {
    public boolean canJump(int[] nums) {
        int maxIndex = nums[0];
        for(int i=0;i<=maxIndex && i<nums.length;i++){
            if((nums[i]+i)>maxIndex){
                maxIndex=nums[i]+i;
            }
        }
        if(maxIndex>=nums.length-1){
            return true;
        }else{
            return false;
        }
    }
}
//优化版
class Solution {
    public boolean canJump(int[] nums) {
        int maxIndex = nums[0];
        for(int i=0;i<=maxIndex && i<nums.length;i++){
            maxIndex=Math.max(nums[i]+i,maxIndex);
            if(maxIndex>=nums.length-1){
                return true;
            }
        }
        return false;
    }
}

45.跳跃游戏II

教程视频:https://www.bilibili.com/video/BV1Y24y1r7XZ/?spm_id_from=pageDriver&vd_source=ddffd51aa532d23e6feac69924e20891
在这里插入图片描述用最少的步数增大覆盖范围。
记录最大覆盖范围的更新次数。

class Solution {
    public int jump(int[] nums) {
        int cur = 0;//表示当前最远覆盖位置
        int next = 0;//记录下一个最远覆盖范围
        int jump = 0;
        for(int i=0; i<nums.length; i++){
            next = Math.max(i+nums[i],next);
            if(i==cur){//到当前最远位置判断是否进行下一跳
                if(cur<nums.length-1){
                    cur=next;
                    jump++;
                }else{
                    break;
                }
            }
        }
        return jump;
    }
}

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

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

相关文章

Java基础(33)Java集合详解

集合类主要负责保存、盛装其他数据&#xff0c;因此集合类也被称为容器类。Java 所有的集合类都位于 java.util 包下&#xff0c;提供了一个表示和操作对象集合的统一构架&#xff0c;包含大量集合接口&#xff0c;以及这些接口的实现类和操作它们的算法。 集合类和数组不一样&…

2023年湖北安全员ABC证报考条件都有哪些?有什么区别?启程别

2023年湖北安全员ABC证报考条件都有哪些&#xff1f;有什么区别&#xff1f;启程别 一、安全员ABC证是什么&#xff1f; 安全员A、B、C证属于建筑三类人员证书。建筑三类人员&#xff1a;是指建筑施工企业主要负责人、项目负责人和专职安全生产管理人员。 建筑企业的法人代表&…

【Linux下】 线程操作及线程互斥

【Linux下】 线程操作及线程互斥 线程操作 注&#xff1a;以下函数使用时&#xff0c;编译文件时需带上-lpthread选项&#xff0c;因为下面的函数都是线程库里面的函数 pthread_self #include <pthread.h> pthread_t pthread_self(void);**作用&#xff1a;**获取当前…

淘宝天猫1688京东商品详情API接口,封装接口可高并发

要提供商品详情数据需要知道具体的商品信息&#xff0c;但通常商品详情数据应包括以下内容&#xff1a; 商品名称&#xff1a;商品的名称&#xff0c;以方便顾客对其进行识别和区分。 商品描述&#xff1a;一段让顾客能够全面认识商品的描述。应能够有效地展示商品的特性、功能…

大数据赛项|2023年广东省大学生计算机设计大赛初赛结果公示

2023年广东省大学生计算机设计大赛 暨第16届中国大学生计算机设计大赛 粤港澳大湾区赛初赛结果公示 根据《广东省教育厅关于做好2023年广东省本科高校大学生学科竞赛工作的通知》&#xff0c;广东外语外贸大学承办2023年“广东省大学生计算机设计大赛”。 在广大师生的热情…

迅为国产化RK3588开发平台16G大内存64G存储2路千兆以太网4G/5G通信

iTOP-3588开发板采用瑞芯微RK3588处理器&#xff0c;是全新一代AloT高端应用芯片采用8nmLP制程&#xff0c;搭载八核64位CPU(四核Cortex-A76四核Cortex-A55架构)集成MaliG610MP4四核GPU&#xff0c;内置AI加速器NPU&#xff0c;算力达6Tops&#xff0c;集成独立的8K视频硬件编码…

OpenCV-Python图像阈值

目录 简单阈值 自适应阈值 Otsu的二值化 所谓的图像阈值&#xff0c;就是图像二值化&#xff0c;什么是二值化&#xff0c;就是只有0和1&#xff0c;没有其他的。在OpenCV的图像里面&#xff0c;二值化表示图像的像素为0和255&#xff0c;并没有其他的值&#xff0c;它跟灰度…

js逆向-某东h5st

声明 本文仅供学习参考&#xff0c;如有侵权可私信本人删除&#xff0c;请勿用于其他途径&#xff0c;违者后果自负&#xff01; 如果觉得文章对你有所帮助&#xff0c;可以给博主点击关注和收藏哦&#xff01; 文章标题 声明前言参数分析扣代码算法还原 前言 目标网站&…

SpringCloud项目实例3--通信服务负载均衡

只是在pom.xml文件中添加了spring-cloud-starter-loadbalancer依赖并且在RestTemplate类中添加了一个LoadBalance的注解。这就是另外一种负载均衡的实现方案 Spring Cloud LoadBalancer 介绍 这种方案有什么优点呢&#xff1f; 减少整个系统的复杂度&#xff0c;不需要额外部…

BDD行为驱动开发+Python案例解析

简介&#xff1a;BDD&#xff08;Behavior-Driven Development&#xff0c;行为驱动开发&#xff09;是一种敏捷软件开发方法&#xff0c;它强调软件应该按照预期的行为来开发。BDD的核心理念是使用自然语言编写的可读性强、易于理解的用户故事&#xff08;User Stories&#x…

【前端三剑客之CSS】

目录 1.CSS1.1什么是CSS1.2 引入方式1.2.1内部样式1.2.2 行内样式表1.2.3 外部样式 2.选择器2.1 基础选择器2.1.1 标签选择器2.1.2 类选择器2.1.3 id选择器2.1.4 通配符选择器 2.2 基础选择器小结2.3 复合选择器2.3.1 后代选择器 3.元素属性3.1 字体元素3.2 文本属性3.3 背景属…

滨海县一中学被指为苏醒全国感恩教育巡回演讲营销搭台

梦想与爱同行—苏醒全国感恩教育巡回演讲活动今天下午一点半在滨海西湖路一中操场举行&#xff0c;数千学生和家长参加。 苏醒全国感恩教育巡回演讲开始&#xff0c;苏醒先生先用一口流利的英语做自我介绍&#xff0c;然后又用中文向前来参加的学生和学生家长介绍说&#xff0…

FS4055B是一款3.2V最高3.6V磷酸铁锂充电IC

FS4055B是一款3.2V最高3.6V磷酸铁锂充电IC&#xff0c;输入电源正负极反接保护的单芯片&#xff0c;兼容大小 REV_1.0 是一款完整的单节锂电池充电器&#xff0c;电池正负极反接保护、 3mA-500mA 充电电流。采用涓流、 恒流、恒压控制&#xff0c;SOT23-5 封装与较少的外部元件…

【MySqL】 表的创建,查看,删除

目录 一.使用Cmd命令执行操作 1.使用&#xff08; mysql -uroot -p)命令进入数据库 2.创建表之前先要使用数据库 3.创建表之前要先确定表的名称&#xff0c;列名&#xff0c;以及每一列的数据类型及属性 4.创建表 注意&#xff1a; 5.查看所有已创建的表 6.查看单表 …

H3C防火墙单机旁路部署(网关在防火墙)

防火墙旁路部署在核心交换机上&#xff0c;内网有三个网段vlan 10&#xff1a;172.16.10.1/24、vlan 20&#xff1a;172.16.20.1/24、vlan30&#xff1a;172.16.30.1。要求内网网关在防火墙设备上&#xff0c;由防火墙作为DHCP服务器给终端下发地址&#xff0c;同时由防火墙来控…

算法笔记Day1 | 时间复杂度和空间复杂度的七七八八

文章目录 时间空间复杂度1. 时间空间复杂度的重要性(作用)2. 时间复杂度和大O表示法1&#xff09;算法图解2&#xff09;代码随想录3&#xff09;王道《数据结构》 3. 大O指的是最糟的情形和一般的情形1&#xff09;大O表示的是一般情况&#xff0c;并不是严格的上界2&#xff…

海量请求下,高并发接口的设计思路

1. 背 景 虽然现在很多人&#xff0c;动不动就提什么高并发、请求量多大&#xff0c;数据量多少多少&#xff0c;但我可以很认真地说&#xff0c;那都是他妈的在吹牛&#xff01; 生产环境&#xff0c;真正有大请求量的&#xff0c;就那么几个业务场景&#xff0c;而且多是面…

应急物流 | 灾后早期阶段多目标选址路径问题的混合元启发式算法

解读作者&#xff1a;李奡&#xff0c;闫同仁 A hybrid meta-heuristic algorithm for the multi-objective location-routing problem in the early post-disaster stage Tongren Yan, Fuqiang Lu, Suxin Wang, Leizhen Wang, Hualing Bi Journal of industrial and managem…

云原生应用架构

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/130566883 一、什么是云原生应用架构 成为云原生应用至少需要满足下面几个特点&#xff1a; ● 使用微服务架构对业务进行拆分。单个微服务是个自治的服务领域&#xff0c;对这个领域内的业务实体能够…

Nature | 通用医学人工智能基础模型

编译 | 李汭璨 审稿 | 王建民 今天为大家介绍的是来自Eric J. Topol和 Pranav Rajpurkar研究团队的一篇医学人工智能的综述论文。高度灵活、可重复使用的人工智能模型的极快发展可能会为医学带来新的能力。作者提出了医学人工智能的新范式&#xff0c;称为通用医学人工智能&…