当前位置: 首页 > article >正文

数据结构与算法之贪心: LeetCode 55. 跳跃游戏 (Ts版)

跳跃游戏

  • https://leetcode.cn/problems/jump-game/description/

描述

  • 给你一个非负整数数组 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 , 所以永远不可能到达最后一个下标。

提示

  • 1 <= nums.length <= 1 0 4 10^4 104
  • 0 <= nums[i] <= 1 0 5 10^5 105

Typescript 版算法实现


1 ) 方案1:贪心

function canJump(nums: number[]): boolean {
    const n = nums.length;
    let rightmost = 0;

    for (let i = 0; i < n; ++i) {
        if (i <= rightmost) {
            rightmost = Math.max(rightmost, i + nums[i]);
            if (rightmost >= n - 1) {
                return true;
            }
        }
    }

    return false;
}

2 ) 方案2: 贪心优化

function canJump(nums: number[]): boolean {
    // 跳跃的范围
    let cover = 0 //cover比num.length-1大
    for (let i = 0; i <= cover; i++) {
        cover = Math.max(cover, i + nums[i])
        if (cover >= nums.length - 1) {
            return true
        }
    }
    return false
};

http://www.kler.cn/a/515124.html

相关文章:

  • C++priority_queue模拟实现
  • 【信息系统项目管理师-选择真题】2019下半年综合知识答案和详解
  • 人工智能之深度学习_[4]-神经网络入门
  • 学生管理系统C++版(简单版)详解
  • 深入剖析 Java 的本地方法接口(JNI)
  • python学opencv|读取图像(四十)掩模:三通道图像的局部覆盖
  • VS环境下调用ffmpeg库
  • SQL sever数据导入导出实验
  • 青少年编程与数学 02-007 PostgreSQL数据库应用 12课题、存储过程编写
  • 逐笔成交逐笔委托Level2高频数据下载和分析:20250122
  • vue视频流播放,支持多种视频格式,如rmvb、mkv
  • vector的使用,以及部分功能的模拟实现(C++)
  • Unity入门1
  • iptables和ipvs差异
  • 攻防世界GFSJ1012 pwnstack
  • GaussDB数据库故障定位手段
  • 詳細講一下mobx的在ReactNative中的用法,包含下載,配置。
  • java开发常用指令整理
  • 【jmeter】下载及使用教程【mac】
  • .NET Framework
  • 【Elasticsearch】RestClient操作文档
  • 数据库-多表查询
  • git远程仓库如何修改
  • 简单排序算法
  • MATLAB绘图时线段颜色、数据点形状与颜色等设置,介绍
  • 手机版扫描王导出 PDF、快速文本识别工具扫描纸张