您的位置:首页 > 编程语言 > C语言/C++

【leetcode】55. Jump Game

2016-10-18 23:13 423 查看
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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息