题解 | #几步可以从头跳到尾#

几步可以从头跳到尾

http://www.nowcoder.com/practice/de62bcee9f9a4881ac80cce6da42b135

[2, 3, 1, 1, 4, 2, 1]为例
第一次:
2可以跳到[3, 1],最远下标为2,那么第二次起跳肯定在这两个数内;
[3, 1]都可以作为第二次起跳点,所以可以跳到[1, 4],最远下标为4,那么第三次起跳肯定在[1, 4]这两个数内;
[1,4]都可以作为第三次起跳点,所以可以调到[2, 1],最远下标为6,已经到终点了;
时间复杂度:
空间复杂度:

class Solution {
public:
    int Jump(int n, vector<int>& A) {
        // write code here
        int ans = 0;
        int maxDst = 0; //当前最大到达位置
        int preJump = 0; //上次最大到达位置
        for(int i = 0; i < n - 1; i ++){
            maxDst = max(maxDst, i + A[i]);
            if(i == preJump){
                preJump = maxDst;
                ans ++;
            }
        }
        return ans;
    }
};
全部评论

相关推荐

11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务