首页 > 其他分享 >力扣经典150题第九题:跳跃游戏

力扣经典150题第九题:跳跃游戏

时间:2024-04-08 09:59:27浏览次数:14  
标签:150 false nums maxReach 力扣 Result 下标 第九 true

目录

1. 简介

本篇博客将讨论力扣经典150题中的跳跃游戏问题。给定一个非负整数数组 nums,数组中的每个元素代表在该位置可以跳跃的最大长度,判断是否能够从数组的第一个下标跳跃到最后一个下标。

2. 问题描述

给你一个非负整数数组 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 <= 104
0 <= nums[i] <= 105

3. 解题思路

方法一:贪心算法

使用贪心算法来解决,遍历数组,维护一个能够到达的最远位置 maxReach,如果当前位置 imaxReach 范围内,则更新 maxReachi + nums[i],如果 maxReach 能够覆盖最后一个位置,则返回 true,否则返回 false

4. 算法实现

方法一:贪心算法
public boolean canJump(int[] nums) {
    int maxReach = 0;
    for (int i = 0; i < nums.length; i++) {
        if (i > maxReach) {
            return false; // 如果当前位置已经超出最远可达位置,则返回false
        }
        maxReach = Math.max(maxReach, i + nums[i]);
        if (maxReach >= nums.length - 1) {
            return true; // 如果最远可达位置已经超过或等于最后一个位置,则返回true
        }
    }
    return false;
}

5. 示例与测试

我们使用示例输入进行测试,并验证算法的正确性:

int[] nums1 = {2, 3, 1, 1, 4};
int[] nums2 = {3, 2, 1, 0, 4};

System.out.println("Test Case 1:");
System.out.println("Expected Result: true");
System.out.println("Actual Result: " + canJump(nums1));

System.out.println("Test Case 2:");
System.out.println("Expected Result: false");
System.out.println("Actual Result: " + canJump(nums2));

输出结果为:

Test Case 1:
Expected Result: true
Actual Result: true

Test Case 2:
Expected Result: false
Actual Result: false

6. 总结与展望

通过本篇博客,我们详细讨论了力扣经典150题中的跳跃游戏问题,并提供了贪心算法的实现方法。这种方法具有高效性和简洁性,在实际应用中具有广泛的适用性。

7. 结语

希望本文能够帮助大家更好地理解和掌握跳跃游戏的解题思路和实现方法,欢迎提出您的宝贵意见和建议。

标签:150,false,nums,maxReach,力扣,Result,下标,第九,true
From: https://blog.csdn.net/weixin_44976692/article/details/137494501

相关文章

  • 【mac权限】解决 mac 运行报错 150: Operation not permitted
    Couldnotsetenvironment:150:OperationnotpermittedwhileSystemIntegrityProtectionisengagedMac下操作文件,遇到Operationnotpermitted原来是索引服务被关闭,导致对文件夹的操作权限失效解决步骤打开系统偏好设置,隐私与安全性,左侧选择‘文件和文件夹’,......
  • 力扣由浅至深 每日一题.21 只出现了一次的数字
    世界大雨滂沱,万物苟且而活               ——24.4.1只出现一次的数字给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此......
  • Offer必备算法22_优先级队列_堆_四道力扣题详解(由易到难)
    目录①力扣1046.最后一块石头的重量解析代码②力扣703.数据流中的第K大元素解析代码③力扣692.前K个高频单词解析代码④力扣295.数据流的中位数解析代码本篇完。①力扣1046.最后一块石头的重量1046.最后一块石头的重量难度简单有一堆石头,每块石头的重......
  • 双数列-力扣-打家劫舍2
    一个专业的小偷,计划偷窃一个环形街道上沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每......
  • 移除元素 -- 力扣第27题 -- 暴力、双指针解法
    题目https://leetcode.cn/problems/remove-element/description/给你一个数组nums 和一个值val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需......
  • LeetCode 面试经典150题---002
    ###169.多数元素给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数大于⌊n/2⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。n==nums.length1<=n<=5*104-109<=nums[i]<=109这题可太有意思了,意思就是找......
  • JS第九天
    今天是第九天,学习了JS中的设置日期和倒计时,计时器以及验证码倒计时,那么话不多说我们开始今天的学习吧一、日期设置1.1日期创建调用 newDate() 来创建一个新的 Date 对象。在调用时可以带有一些参数,创建一个 Date 对象,其时间等于1970年1月1日UTC+0之后经过的......
  • LeetCode 面试经典150题---001
    少年听雨歌楼上,红烛昏罗帐。壮年听雨客舟中,江阔云低、断雁叫西风而今听雨僧庐下鬓已星星也。悲欢离合总无情,一任阶前、点滴到天明。###88.合并两个有序数组给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的......
  • Java基础知识总结(第九篇):泛型和JUnit5
    声明:        1.本文根据韩顺平老师教学视频自行整理,以便记忆       2.若有错误不当之处,请指出系列文章目录Java基础知识总结(第一篇):基础语法Java基础知识总结(第二篇):流程控制语句(分支控制和循环控制)Java基础知识总结(第三篇):数组、排......
  • 150行Python代码模拟太阳系行星运转
    今天我们用Python来模拟一下太阳系行星运动轨迹~先上成品图(运行效果含音乐的呦)想要实现这样的效果并不难准备材料首先我们需要准备这样一些材料宇宙背景图背景透明的行星图 编写代码代码分块详解导入需要的模块import pygame  import sys ......