【贪心算法】 55. 跳跃游戏

55. 跳跃游戏

解题思路

  • 定义变量 n 来存储数组 nums 的长度。
  • 初始化 farthest 变量为 0,用于记录当前能够到达的最远距离。
  • 使用一个 for 循环遍历数组,但是不包括数组的最后一个元素,因为我们的目标是看是否能到达最后一个位置。
  • 在循环内部,使用 Math.max(farthest, i + nums[i]) 来更新 farthest,这表示当前能到达的最远距离是之前计算的 farthest 和*当前位置加上当前位置能跳的最远距离中的较大值。
  • 如果在某一刻 farthest 小于或等于当前位置 i,意味着无法前进,因此返回 false。
  • 循环结束后,如果 farthest 大于或等于数组最后一个位置的索引,表示可以到达最后,返回 true
java 复制代码
class Solution {
    public boolean canJump(int[] nums) {
        int n = nums.length;
        int farthest = 0;

        for(int i = 0; i < n - 1; i++){
            farthest = Math.max(farthest,i + nums[i]);// 更新最远的跳跃距离

            if(farthest <= i){
                return false;
            }
        }

        return farthest >= n - 1;// 最大长度大于最后一个位置索引 表示可以到达
    }
}
相关推荐
V我五十买鸡腿3 分钟前
顺序栈和链式栈
c语言·数据结构·笔记·算法
我爱一条柴ya23 分钟前
【AI大模型】线性回归:经典算法的深度解析与实战指南
人工智能·python·算法·ai·ai编程
三维重建-光栅投影2 小时前
VS中将cuda项目编译为DLL并调用
算法
课堂剪切板4 小时前
ch03 部分题目思路
算法
山登绝顶我为峰 3(^v^)35 小时前
如何录制带备注的演示文稿(LaTex Beamer + Pympress)
c++·线性代数·算法·计算机·密码学·音视频·latex
Two_brushes.6 小时前
【算法】宽度优先遍历BFS
算法·leetcode·哈希算法·宽度优先
森焱森8 小时前
水下航行器外形分类详解
c语言·单片机·算法·架构·无人机
QuantumStack10 小时前
【C++ 真题】P1104 生日
开发语言·c++·算法
写个博客11 小时前
暑假算法日记第一天
算法
绿皮的猪猪侠11 小时前
算法笔记上机训练实战指南刷题
笔记·算法·pta·上机·浙大