【leetcode】55. Jump Game

Difficulty:Medium



Given an array of non-negative integers, you are initially positioned at the first index of the array.

Each element in the array represents your maximum jump length at that position.

Determine if you are able to reach the last index.

For example:
A = [2,3,1,1,4], return true.

A = [3,2,1,0,4], return false.


解题思路:

jump game I版本相对来说还是很简单的,由于题目描述中的限制条件是很少的,并且只需要判断能否到达最后一个,也就是考虑,在每一天所能到达的最远的距离。

这道题目只需要进行一次循环遍历就可以解决:

使用一个额外的变量arr记录当前状态下所能到达的最远的距离。

当当天的位置加上当天所能到达的最远的距离大于当前状况下所能到达的最远的距离arr时,更新arr,然后使用两种情况控制循环的结束,分别为当i>=n的时候也就是遍历了一遍也没有找到可行的方案数,而第二种情况就是,当前状况下所能到达的最远的距离arr已经小于了i,在i不断增大向前移动的过程中最远距离不变,所以产生了越界的情况,就结束了循环。

代码如下:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值