-  题目描述(力扣45题) :-  给定一个长度为 n的 0 索引整数数组nums。初始位置为nums[0]。每个元素 nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意nums[i + j]处:
- 0 <= j <= nums[i]
- i + j < n
-  返回到达 nums[n - 1]的最小跳跃次数。生成的测试用例可以到达nums[n - 1]。
 
-  
 
  
-  解题思路:- 以[2, 3, 1, 1, 4] 为例
- 首先从 0 索引位置出发, 可以跳到 1, 2 索引
  
- 1 索引的 3 刚好可以到达最后一个位置的4, 二 2 索引的1 只能到达 3 索引的 1, 所以选择从 1 索引的 3 跳跃, 一共跳两次, 返回 2
 
- 简单来说, 就是在本次的跳跃范围以内, 找出下次跳跃距离最远的那一个索引(位置).
-  解题步骤:
-  int length = nums.length;获取数组的长度,用于控制循环范围。
-  int end = 0;这个变量记录了当前跳跃的范围的最远位置。
-  int maxPosition = 0;这个变量记录了当前跳跃范围内能够到达的最远位置。
-  int steps = 0;这个变量记录了跳跃的步数。
-  for (int i = 0; i < length - 1; i++) {这是一个循环,从数组的第一个位置开始,遍历到倒数第二个位置。因为在循环中会访问nums[i+1],所以循环的终止条件是i < length - 1。
-  maxPosition = Math.max(maxPosition, i + nums[i]);更新当前跳跃范围内能够到达的最远位置。i + nums[i]表示从当前位置能够跳跃到的最远位置,通过Math.max来更新maxPosition。
-  if (i == end) {如果当前位置i达到了之前记录的跳跃范围的最远位置end,说明需要进行下一次跳跃了。
-  以下是代码实现:-  class Solution { public int jump(int[] nums) { int end = 0; int maxLocal = 0; int step = 0; for(int i = 0; i <= end && end < nums.length - 1; i++) { maxLocal = Math.max(maxLocal, i + nums[i]); if(i == end) { end = maxLocal; step++; } } return step; } }
-  以上是本篇文章的全部内容, 感谢观看 
 
-  





![[LitCTF 2023]PHP是世界上最好的语言!!、 [LitCTF 2023]Vim yyds、 [羊城杯 2020]easycon](https://img-blog.csdnimg.cn/direct/60895ce1042e4713b4f3f123b8633151.png)













