题解 | #牛群跃迁#

牛群跃迁

https://www.nowcoder.com/practice/565683772800460496f2d10f2388698e

考察的知识点:贪心;

解答方法分析:

  1. 获取数组长度n,并初始化变量maxReach为0,表示当前能够到达的最远位置。
  2. 使用循环遍历数组元素,下标从0到n-1。
  3. 在每次循环中,判断当前下标i是否大于maxReach。如果是,说明在前面的跳跃过程中无法到达该位置,直接返回false。
  4. 更新maxReach的值,通过比较当前maxReach和i + nums[i]的大小,取较大的值,表示在当前位置可以跳跃到的最远位置。
  5. 判断maxReach是否大于等于n - 1,如果是,说明已经可以跳跃到最后一个位置,直接返回true。
  6. 循环结束后,表示能够跳跃到最后一个位置,返回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;
    }
};

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务