题解 | #牛群跃迁#
牛群跃迁
https://www.nowcoder.com/practice/565683772800460496f2d10f2388698e
考察的知识点:贪心;
解答方法分析:
- 获取数组长度n,并初始化变量maxReach为0,表示当前能够到达的最远位置。
- 使用循环遍历数组元素,下标从0到n-1。
- 在每次循环中,判断当前下标i是否大于maxReach。如果是,说明在前面的跳跃过程中无法到达该位置,直接返回false。
- 更新maxReach的值,通过比较当前maxReach和i + nums[i]的大小,取较大的值,表示在当前位置可以跳跃到的最远位置。
- 判断maxReach是否大于等于n - 1,如果是,说明已经可以跳跃到最后一个位置,直接返回true。
- 循环结束后,表示能够跳跃到最后一个位置,返回true。
所用编程语言:C++;
完整编程代码:↓
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return bool布尔型 */ bool can_jump(vector<int>& nums) { int n = nums.size(); int maxReach = 0; for (int i = 0; i < n; i++) { if (i > maxReach) { return false; } maxReach = max(maxReach, i + nums[i]); if (maxReach >= n - 1) { return true; } } return true; } };