【力扣刷题 | 第十七天】

news2024/11/24 7:18:58

目录

前言:

55. 跳跃游戏 - 力扣(LeetCode)

45. 跳跃游戏 II - 力扣(LeetCode)

总结:


前言:

        今天两道类型都是贪心算法,希望可以有所收获

55. 跳跃游戏 - 力扣(LeetCode)

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标。

其实这道题注重的是思想,很多人把这道题当作贪心算法思路去做,但是都陷入了一个思维陷阱:

我在当前位置如何选择下一步,使其最后能够到达目的点。

但是如果这样想,就会陷入很难的一个解题思路,就是如何选取下一步怎么走,因为有的时候贪的步数多反而无法到达重点。

因此我们不要纠结于到底应该怎么走,而是看覆盖范围,我用实例给大家举例子:

 我们可以用横线表示覆盖范围:

 可以清楚的看到3已经覆盖了4,那么我们就可以知道在这个数组中,我们是可以走到最后一个点的。

我们再举一个反例:

 我们就可以看到这个数组的元素(不包括最后一个元素)是无法覆盖到最后一个点的,那么无论我们怎么走也不可能到达最后一个点。

因此这道题我们根据这种思想,可以写出解法:

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int size =nums.size();
        int cover=0;
        for(int i=0;i<=cover;i++)
        {
           cover=max(nums[i]+i,cover);
            if(cover>=size-1)
            {
                return true;
            }         
        }
        return false;
    }
};

45. 跳跃游戏 II - 力扣(LeetCode)

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

0 <= j <= nums[i] 
i + j < n
返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。

 这道题也是贪心算法思路,但是很多人贪心的目的错了,上道题中我们引入了覆盖范围,那么实际上在最小跳跃次数的前提下我们贪的不是最多的步数,而是最大的覆盖范围。

根据这个解题思想,我们可以得出:

class Solution {
public:
    int jump(vector<int>& nums) {
        int size =nums.size();
        int cur=0;
        int next=0;
        int count=0;
        if(size==1)
        {
            return 0;
        }

        for(int i=0;i<size;i++)
        {
            next=max(i+nums[i],next);
            if(i==cur)
            {
                if(cur!=size-1)
                {
                    count++;
                    cur=next;
                }
                if(cur>=size-1)
                {
                    break;
                }
            }
        }
        return count;
    }
    
};

我来做一下详细的解释:先建立四个变量:size  表示到达目的点所需长度,cur  表示当前所在点的覆盖范围,next  表示我们将要跳到的点的覆盖范围,count  记录跳跃次数。

此后基于当前位置的覆盖范围,我们向后寻找下一个最大的覆盖范围,这也就是for语句里面三个if的作用

  • if(i==cur)用来判断我们的是否已经判断完当前覆盖范围内的下一个最大覆盖范围。
  • if(cur!=size-1)用来判断是否当前覆盖范围未覆盖到目的点,如果不等于就是没覆盖,如果没覆盖,我们就要走到下一个最大覆盖点处(cur=next),并且给跳跃次数+1(count++)
  • if(cur>=size-1)用来判断是否当前覆盖范围已经覆盖到目的点,如果已经覆盖,则说明此时的跳跃步数就已经是最短跳跃步数,直接退出循环,输出结果。

总结:

贪心算法的题目万变不离其宗,我们还是要通过大量的刷题掌握更多的贪心算法思路。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

 

 

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

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

相关文章

入门车载以太网

前言 近些年来,随着为了让汽车更加安全、智能、环保等,一系列的高级辅助驾驶功能喷涌而出。未来满足这些需求,就对传统的电子电器架构带来了严峻的考验,需要越来越多的电子部件参与信息交互,导致对网络传输速率,稳定性,负载率等方面都提出了更为严格的挑战。 除此以外…

哪些职位需要CISP证书?快进来看看你需不需要

CISP是目前中国最主流的信息行业的证书&#xff0c;也是业界公认的最专业的信息安全技术和管理资格培训。无论是政府部门、金融、电力、交通能源、IT等相关行业&#xff0c;都可以看到CISP证书的持有人。现在持证的人数日趋上升&#xff0c;成为一个必备证书。CISP知识体系是国…

【JavaEE】HTTP协议和抓包工具的使用

目录 1、HTTP的概述和抓包工具的使用 1.1、HTTP是什么 1.2、了解HTTP协议的工作过程 1.3、抓包工具的使用 1.3.1、抓包工具在HTTP传输时的工作原理 1.3.2、Fiddler抓包工具的下载和使用 2、HTTP协议格式 2.1、HTTP 请求格式 2.1.1.基本格式 2.1.2、了解HTTP请求包中的…

有趣的命令——————用随机密码新建20个用户,并输出密码

vim test.sh 输入以下内容&#xff1a;for i in seq 10douseradd user$ipassecho $RANDOM | md5sum |cut -c 1-6echo "$pass" | passwd --stdin "user$i"echo -e "账户&#xff1a;user$i\n 密码&#xff1a;$pass" >> /root/passwddone例…

Layui关于如何添加连接数据库的选项卡(三)

目录 1.实现效果&#xff1a; 2.思路&#xff1a; 3.PermissionDao类&#xff08;增加属性&#xff09; 4.主页&#xff1a;jsp 5.简洁风格修改选项卡的样式&#xff1a; 6.关于style中的属性设置使用 7.关于Element 组件介绍&#xff1a; 8. Layui 中的页面进行更新和…

如何解决git中拉取或提交代码出现的ssl证书问题?

问题描述 执行命令的时候&#xff0c;出现"…certificate problem…"报错&#xff0c;一般在执行"git push“ (推送分支) 或者 “git clone”(克隆仓库)时出现&#xff0c;原因时因为SSL安全验证问题&#xff0c;不能获取到本地的的证书。那么如何解决这个问题…

Linus再发飙:这就是一堆垃圾!

Linux 6.3 内核的合并窗口已开启&#xff0c;Linus Torvalds 也收到了大量的 PR&#xff0c;目前总体看来正在有序进行。但 Linus 对部分合并请求的日志信息非常不满&#xff1a;“我之前就已经说过&#xff0c;很显然现在我需要再重复一次&#xff0c;如果你懒得解释为什么会存…

【UE4 C++】根据指定路径生成静态网格体

在上一篇博客中&#xff08;【UE C】蓝图调用C函数&#xff09;&#xff0c;我们用C创建了一个蓝图函数库&#xff0c;本篇文章在这个蓝图函数库基础上增加一个方法&#xff0c;该方法只需输入一个文件目录路径&#xff0c;就可在场景中生成该目录下得所有静态网格体。&#xf…

Kafka学习笔记(高级篇)

目录 高级功能 高效读写 涉及技术 ZooKeeper 自定义拦截器 监控 延迟消费 一些改进手段 高级功能 高效读写 涉及技术 高吞吐量&#xff1a;Kafka 每秒可以处理数百万消息。这是因为 Kafka 消息的处理是以批处理&#xff08;Batching&#xff09;的方式来完成的&…

python+unittest+requests+HTMLRunner搭建接口测试框架,执行用例请求多个不同请求方式的接口

问题描述&#xff1a; 搭建接口测试框架&#xff0c;执行用例请求多个不同请求方式的接口 实现步骤&#xff1a; ① 创建配置文件config.ini&#xff0c;写入部分公用参数&#xff0c;如接口的基本url、测试报告文件路径、测试数据文件路径等配置项 1 [DATABASE] 2 data_addre…

一文带你快速了解如何在Linux上部署项目

文章目录 前言一、手工部署项目1.在IDEA中开发SpringBoot项目并打成jar包2. 将jar包上传到Linux服务器3. 输入指令启动SpringBoot程序4. 检查防火墙&#xff0c;确保80端口&#xff08;项目端口&#xff09;对外开放&#xff0c;访问SpringBoot项目5. 在windows访问项目6. 改为…

Layui选项卡Tab:完美实现网页内容分类与导航

目录 什么是Layui选项卡&#xff1f; Layui选项卡的作用 实现步骤 1、编写公共jsp&#xff08;header.jsp&#xff09; 2、jsp界面&#xff08;main.jsp&#xff09; 3、JS代码&#xff08;main.js&#xff09; 4、PermissionDao类的修改 5、最终运行结果 什么是Layui选…

数据备份与还原,(mysqldump,source)索引(index),创建视图(view)

一、备份与还原 /***************************样例表***************************/ CREATE DATABASE booksDB; use booksDB;CREATE TABLE books (bk_id INT NOT NULL PRIMARY KEY,bk_title VARCHAR(50) NOT NULL,copyright YEAR NOT NULL ); INSERT INTO books VALUES (11078…

【i阿极送书——第五期】《Python机器学习:基于PyTorch和Scikit-Learn》

系列文章目录 作者&#xff1a;i阿极 作者简介&#xff1a;数据分析领域优质创作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x1f44d;收藏&#x1f4c1;评论&#x1f4d2;…

【CANN训练营】Atlas 200I DK A2开发板运行ChatYuan-large对话机器人应用

环境介绍 PC 操作系统&#xff1a;Ubuntu 22 内存&#xff1a;32GB Python&#xff1a;3.8 开发板 华为Atlas 200I DK A2 内存&#xff1a;4G NPU&#xff1a;昇腾310B 环境准备 只需要一台Linux 系统的PC机即可 Python版本需要3.7、3.8、3.9 准备CANN ToolKit 下载CANN T…

Centos6.5 用户权限例题

例题一&#xff1a;为网站管理员创建一个FTP帐户webmaster&#xff0c;将其加入到ftp组中&#xff0c;其登录的主目录为WEB站点的主目录/var/www/jnds.net&#xff0c;设置其为系统帐户&#xff0c;但却没有登录系统的权限&#xff0c;备注该用户为“FTP User” 解&#xff1a…

【RocketMQ】005-Docker 部署 RocketMQ

【RocketMQ】005-Docker 部署 RocketMQ 文章目录 【RocketMQ】005-Docker 部署 RocketMQ一、部署1、拉取镜像MQ 镜像可视化平台镜像 2、创建挂载目录创建 nameserver 挂载目录创建 broker 目录创建 broker 配置文件目录 3、编辑配置文件4、启动服务启动 nameserver启动 broker启…

pytorch保存、加载和解析模型权重

1、模型保存和加载 主要有两种情况&#xff1a;一是仅保存参数&#xff0c;二是保存参数及模型结构。 保存参数&#xff1a; torch.save(net.state_dict()) 加载参数&#xff08;加载参数前需要先实例化模型&#xff09;&#xff1a; param torch.load(param.pth) net.load_…

AWS 中文入门开发教学 47- S3 - 基本的使用

知识点 S3 - 基本的使用方法实战演习 创建存储桶 阻止所有公网访问: 打开版本控制、添加标签: KMS是收费的: 创建成功: 上传文件 选择存储类:

这是中国人工智能AI激情澎湃的一周

融资 贝联珠贯完成 5000 万元天使轮融资&#xff0c;业务涵盖 AI 型算力市场据投中网报道&#xff0c;近日&#xff0c;云资源管理服务提供商浙江贝联珠贯宣布完成 5000 万元天使轮融资&#xff0c;由元璟资本、红杉中国种子基金和舟轩股权投资。 盛大网络 CEO 陈天桥再投 1…