您现在的位置是:首页 > Javascript
当前栏目
刷刷刷 Day 32 | 55. 跳跃游戏
2023-04-18 15:27:57 时间
55. 跳跃游戏
LeetCode题目要求
给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标。
示例
输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。
解题思路
经过跳跃分析,如下图都可以到达尾部:
![图](https://img2023.cnblogs.com/blog/458364/202302/458364-20230214215711741-875199687.png)
而实际上要到达数组的终点,我们每次都以最大值来跳跃,且要把这个覆盖的范围不断的累加,直到覆盖数组长度,那么就满足条件
上代码
class Solution {
public boolean canJump(int[] nums) {
// 本题的跳跃从下标 0 开始跳跃,最大步骤就是 下标对应的值
// 当跳跃到的下标值为 0 且不是最后一个元素,那就失败了。
// 要想达到尾部,且保证最优,那么优先跳最大步骤,如果最大步无法到达,那么就会无法达到尾部
// 2 0 0 3 1
// 跳跃范围
int range = 0;
int len = nums.length;
for (int i = 0; i <= range; i++) {
// 动态变更可覆盖的范围,在已覆盖的范围内与新的覆盖值对比,取大的
range = Math.max(range, i + nums[i]);
if (range >= len - 1) {
return true;
}
}
return false;
}
}
重难点
循环范围是动态变化的
附:学习资料链接
相关文章
- 前端面试 【JavaScript】— typeof 是否能正确判断类型?
- 前端面试 【JavaScript】— instanceof 能否判断基本数据类型?
- 前端面试 【JavaScript】— 能不能手动实现一下 instanceof 的功能?
- 前端面试 【JavaScript】— Object.is和=== 有什么区别?
- 前端面试 【JavaScript】— JS中类型转换有哪几种?
- 前端面试 【JavaScript】— == 和 ===有什么区别?
- 前端面试 【JavaScript】— 对象转原始类型是根据什么流程运行的?
- JavaScript 的 parseInt() 函数
- javascript实现两个数字进行组合
- JS监听键盘按键
- 大前端开发中的路由管理之五:Flutter篇
- Javascript的DOM操作
- 在Vue项目中使用WebSocket技术
- 新手向:前端程序员必学基本技能——调试JS代码
- React 毁了 Web 开发!
- 「JS 逆向百例」cnki 学术翻译 AES 加密分析
- 商标注册域名后缀用什么?商标和域名有哪些区别?
- 网站建设流程是怎样的?需要看重哪些细节?
- 网站域名商标注册流程是什么?网站域名商标有什么用?
- 如何建设一个实用性强的网站 网站上线后如何运营