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

Leetcode JAVA刷刷站(55)跳跃游戏

一、题目概述

二、思路方向

       在Java中,为了解决这个问题,你可以采用贪心算法的思想。贪心算法在这里的应用主要体现在,每一步都尽可能跳得远,以此来判断是否能够到达数组的最后一个下标。

       算法的思路是,遍历数组nums,用一个变量farthest来记录遍历过程中能够到达的最远位置。如果在遍历过程中,farthest的值能够大于等于数组的长度减一(即最后一个下标的索引),那么就可以返回true,表示能够到达最后一个下标。如果在遍历结束时,还没有达到上述条件,则返回false

三、代码实现   

public class Solution {  public boolean canJump(int[] nums) {  if (nums == null || nums.length == 0) {  return false;  }  int farthest = 0; // 能够到达的最远位置  for (int i = 0; i < nums.length; i++) {  // 如果当前位置已经超过或等于最远位置,那么无法再向前跳了  if (i > farthest) {  return false;  }  // 更新能够到达的最远位置  farthest = Math.max(farthest, i + nums[i]);  // 如果能够到达的最远位置已经包括或超过了最后一个下标,则返回true  if (farthest >= nums.length - 1) {  return true;  }  }  // 如果遍历结束还没有返回true,则默认返回false  return false;  }  public static void main(String[] args) {  Solution solution = new Solution();  int[] nums = {2, 3, 1, 1, 4};  System.out.println(solution.canJump(nums)); // 输出 true  int[] nums2 = {3, 2, 1, 0, 4};  System.out.println(solution.canJump(nums2)); // 输出 false  }  
}

执行结果: 

四、小结

       在这段代码中,我们使用了farthest变量来记录遍历过程中能够到达的最远位置。对于数组中的每一个位置,我们都检查是否可以通过当前位置跳跃到更远的位置,并更新farthest的值。如果在遍历过程中发现某个位置i已经超过了当前能够到达的最远位置farthest,那么就无法再向前跳了,直接返回false。如果能够到达的最远位置farthest已经包括或超过了最后一个下标,那么就返回true。如果遍历完整个数组都没有返回true,则默认返回false

 结语  

自古以来的伟人

大多是抱着不屈不挠的精神

从逆境中挣扎奋斗过来的

!!!


http://www.mrgr.cn/news/4382.html

相关文章:

  • SpringBoot文档之入门的阅读笔记
  • 【Solidity】变量与类型
  • 你真的了解《黑神话·悟空》吗?揭秘它背后鲜为人知的故事
  • 速度+耐力,希迪智驾引领中国商用车自动驾驶发展
  • 葡萄参考基因组
  • C语言 | Leetcode C语言题解之第338题比特位计数
  • 数据之争:网络爬虫涉及的法律问题
  • 【机器学习第十二章——计算学习理论】
  • Tensorflow 特征列说明
  • 数据结构初阶(2)——链表OJ
  • Conda命令
  • Java中的主要设计模式
  • 嘉林娱乐公布10名签约艺人 星途启程全力以赴
  • 用SpringBoot和vue写一个2048小游戏
  • ZR执行器:适应多样环境,精准控制的关键
  • 二叉树 - 对称二叉树
  • 上海晋名气瓶暂存柜助力高校气瓶安全储存
  • 安全基础学习-SM3加密算法
  • perl——获取数组中元素的索引
  • 【51单片机】DHT11驱动,11.0592MHZ,使用DHT11传感器测量温湿度