力扣网编程55题:跳跃游戏之逆向思维

一. 简介

前面一篇文章使用贪心算法解决 力扣网55题:跳跃游戏,文章如下:

力扣网编程55题:跳跃游戏之贪心算法-CSDN博客

二. 力扣网编程55题:跳跃游戏之逆向思维

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

示例 1:
输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

示例 2:
输入:nums = [3,2,1,0,4]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

逆向思维分析:

采用逆向思维,从终点倒推判断哪些位置可以到达终点。

从最后一个位置开始往前遍历,维护一个变量 last_pos:表示当前能够跳到到终点的最近位置。

如果 index+ nums[index] >= last_pos,就更新 last_pos为当前位置 index(因为index是新的可到达终点的最小下标)。

遍历完数组,最后判断 last_pos是否为0;

解题思路二:(从后往前逆向思维)

1. 定义一个变量last_pos:初始化为numsSize-1,表示当前能够跳到终点的最近位置。

2. 遍历数组,从倒数第二个元素开始,判断当前位置+跳跃的长度(即数组元素值)是否大于等于 last_pos,如果满足,则将last_pos = i(因为 index是新的可到达终点的最小下标);

3. 数组遍历结束,最后判断last_pos是否为0,如果是则说明数组从首元素可以跳跃到终点,否则不行;

C语言实现如下:

//逆向思维
//从数组末尾开始,从后往前遍历
bool canJump(int* nums, int numsSize) {//last_pos表示能到达终点位置的最近位置//初始时,终点位置是可到达的int index;int last_pos = numsSize-1;for(index = numsSize-1; index >= 0, index--) {//关键判断://如果从当前位置index出发,跳跃nums[index]长度的距离能够到达或超过last_pos//说明可以从index位置跳跃到last_pos的位置,进而到达终点//因为更新last_pos为index,因为现在index成为了新的可到达终点的最前位置if((index + nums[index] >= last_pos)) {last_pos = index;}}if(!index){return true;}else{return false;}
}

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

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

相关文章

苍穹外卖--day12数据统计-Excel报表

1.工作台1.1实现思路工作台是系统运营的数据看板,并提供快捷操作入口,可以有效提高商家的工作效率。工作台展示的数据:①今日数据②订单管理③菜品总览④套餐总览⑤订单信息名词解释:①营业额:已经完成订单的总金额②有…

鸿蒙应用开发:从网络获取数据

一、网络状态概述上述任一指标的变化均可视为网络状态的改变 二、获取网络信息 创建网络对象 //创建网络对象 //?表示可传可不传 connection.createNetConnection(netSpecifier?:NetSpecifier,timeout?:number):NetConnection;获取默认激活网络及其能力 //获取默认激活网络 …

探索开源虚拟 Excel 函数模块:Python 中的 Excel 功能利器

在数据处理和分析的领域中,Excel 一直是一款备受青睐的工具,它提供了丰富多样的函数,帮助用户高效地完成各种数据操作。而现在,我(董翔)开发一个基于 Python 的虚拟 Excel 函数模块,它将 Excel …

开源 vGPU 方案 HAMi: corememory 隔离测试

本文主要对开源的 vGPU 方案 HAMi 的 GPU Core&Memory 隔离功能进行测试。 省流: HAMi vGPU 方案提供的 Core&Memory 隔离基本符合预期: Core 隔离:Pod 能使用的算力会围绕设定值波动,但是一段时间内平均下来和申请的 g…

openstack安装并初始化

openstack安装并初始化openStack 概述OpenStack 起源什么是Openstackopenstack优势使用本地仓库离线安装系统基本环境设置为系统设置本地仓库创建openstack-train的仓库更新系统安装部署工具一键安装设置桥接网络通过 Dashboard 体验 OpenStack 功能创建云主机创建网络(1)用adm…

解决 Cannot create Swift scratch context

场景复现 Xcode 控制台输出: Cannot create Swift scratch context (couldnt create a Clang Importer)Analysis 分析 发生了什么? 在调试 Swift 代码或在 LLDB 里执行 po/expr 命令时,LLDB 需要为表达式临时创建一份 “Swift scratch co…

机械时代的计算

1、机械计算起源 最近在想平衡三进制的除法,想看看那么大牛是怎么做的,资料很少,但还是有的,有但是看不懂,也不知靠不靠谱,后面跟着实践了能行,下面就看看Balanced Ternary Arithmetic&#xff…

相机光学(四十八)——渐晕

1.什么是渐晕 渐晕,又称“光衰减”,在光学和摄影中很常见,简单来说就是与中心相比,图像角落变暗。渐晕要么是由光学引起的,要么是在后期处理中故意添加的,目的是将观看者的视线从角落的干扰物吸引到图像的中…

LabVIEW多通道阻抗测试仪

LabVIEW集成 Keysight 数字万用表与 NI 矩阵开关卡,构建多通道阻抗测试系统,实现设备连接电缆的多芯阻抗自动化测试,涵盖数据采集、分析、记录与显示功能,适用于高精度阻抗检测场景,展现LabVIEW在仪器控制与自动化测试…

MySQL的5.0和8.0版本区别

目录 1、MySQL版本-- 》5版本 1.1、InnoDB存储引擎 1.2、存储过程和触发器 1.3、视图 1.4、增强的查询优化器 1.5、增强的索引支持 1.6、外键支持 1.7、分区表和分布式查询 2、MySQL版本-- 》8版本 2.1、性能 2.2、字符编码改变 2.3、持久化保存 2.4、隐藏索引和降…

python实现简单的地图绘制与标记20250705

用python语言绘制显示范围不大于上海地区的地图 您的代码实现了一个 上海武馆地理信息系统,主要功能是通过可视化地图展示上海各区的传统武术馆信息。 通过和deeps对话一晚上实现的,我就是描述修改 高德的api key我搞了一会,平时很少接触密…

Qt开发:QListWidget的介绍和使用

文章目录 一、QListWidget的简介二、QListWidget的基本用法三、QListWidget的数据操作2.1 插入数据2.2 查找数据2.3 选项设置 四、QListWidget的信号与槽 一、QListWidget的简介 QListWidget 是 Qt 框架中用于显示和操作条目列表的控件,它是 QListView 的一个子类&a…

React Native 亲切的组件们(函数式组件/class组件)和陌生的样式

写多了taro, 看见react native中的组件好亲切啊,几乎一模一样。 一、函数式组件 — 常用 1)无状态,每次刷新都是生成一个新的状态 2)基于状态变化的管理 3)简洁,代码少,易于服用 import Reac…

Spring boot之身份验证和访问控制

本文笔记跟随于遇见狂神说老师的视频 一.SpringSecurity(安全) 1.相关概念 在web开发中,安全第一位,有简单的方法,比如:拦截器,过滤器 也有安全框架,比如:SpringSecu…

C#使用开源框架NetronLight绘制流程图

之前使用MindFusion.Diagramming绘制流程图确认很方便,只能试用版,如果长期使用,需要收费。 C#使用MindFusion.Diagramming框架绘制流程图(2):流程图示例_c# 画流程图控件-CSDN博客 这里找一个简易开源框架NetronLight,GIT下载地…

支持向量机(SVM)在脑部MRI分类中的深入应用与实现

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…

AtCoder AT_abc413_c [ABC413C] Large Queue 题解

题目大意 有一个初始为空的序列 A A A, Q Q Q 次操作分为两类: 第一类:将 c c c 个 x x x 放到 A A A 的末尾。第二类:将前 k k k 个数的和输出并移除它们。 思路 这是一个求和问题,想到的第一个思路是前缀和…

「源力觉醒 创作者计划」_文心大模型开源:开启 AI 新时代的大门

在人工智能的浩瀚星空中,大模型技术宛如一颗璀璨的巨星,照亮了无数行业前行的道路。自诞生以来,大模型凭借其强大的语言理解与生成能力,引发了全球范围内的技术变革与创新浪潮。百度宣布于 6 月 30 日开源文心大模型 4.5 系列&…

Git 怎么判断是否冲突?

📌 [Q&A] Git 怎么判断是否冲突? Git 使用的是三路合并算法(Three-way Merge),它比较: 共同祖先提交(base) 当前分支的改动(ours) 被合并分支的改动&am…

在sf=0.1时测试fireducks、duckdb、polars的tpch

首先,从https://github.1git.de/fireducks-dev/polars-tpch下载源代码包,将其解压缩到/par/fire目录。 然后进入此目录,运行 SCALE_FACTOR0.1 ./run-fireducks.sh,脚本会首先安装所需的包,编译tpch的数据生成器&#x…