题解 | #牛群跃迁#
牛群跃迁
https://www.nowcoder.com/practice/565683772800460496f2d10f2388698e
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return bool布尔型 */ public boolean can_jump (int[] nums) { // write code here int n = nums.length; int maxReach = 0; // 记录当前可达到的最远位置 for (int i = 0; i < n; i++) { // 如果当前位置超过了最远可达位置,说明无法继续跳跃 if (i > maxReach) { return false; } // 更新最远可达位置 maxReach = Math.max(maxReach, i + nums[i]); // 如果最远可达位置已经达到或超过数组的最后一个位置,说明可以成功跳跃到最后 if (maxReach >= n - 1) { return true; } } return false; } }
Java 编程语言。
该题考察了以下知识点:
- 循环遍历
- 条件判断
- 数值比较
代码的文字解释如下:
- 首先获取障碍数组的长度 n。
- 创建变量
maxReach
来记录当前可达到的最远位置,初始化为 0。 - 使用循环遍历障碍数组中的每个位置。
- 在循环内部,首先判断当前位置是否超过了最远可达位置,如果是则返回
false
。 - 更新
maxReach
为当前位置与当前位置可跳跃长度之和的较大值。 - 如果最远可达位置已经达到或超过数组的最后一个位置,说明可以成功跳跃到最后,返回
true
。 - 如果循环结束仍未返回,说明无法跳跃到最后一个障碍位置,返回
false
。