码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode55. 跳跃游戏

时间:2020-06-27 00:21:21      阅读:48      评论:0      收藏:0      [点我收藏+]

标签:数组   起点   public   贪心   for   amp   return   距离   因此   

技术图片
这题是典型的贪心。
我们用一个变量canReach表示最远能到达的距离,canReach的初始值为0。
遍历数组,当遍历到位置x时,如果x小于等于canReach,说明当前位置可以从起点经过若干步跳跃到达,
因此我们可以用canReach = max(canReach, x + nums[x])更新当前可以到达的最远距离。
如果某一步更新了canReach之后,发现最远可到达的距离已经超过了数组的最后一个位置(canReach大于等于nums.size() - 1),
说明最后一个位置可达,返回true。
如果数组遍历结束之后,canReach还是小于数组的最后一个位置,说明最后一个位置不可达,返回false。
代码如下:

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int canReach = 0;
        for(int i = 0; i < nums.size(); ++i) {
            if(i <= canReach) {
                canReach = max(canReach, i + nums[i]);
                if(canReach >= nums.size() - 1) {
                    return true;
                }
            }
        }
        return false;
    }
};

LeetCode55. 跳跃游戏

标签:数组   起点   public   贪心   for   amp   return   距离   因此   

原文地址:https://www.cnblogs.com/linrj/p/13196719.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!