Lintcode116 Jump Game solution 题解

【题目描述】

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.

给出一个非负整数数组,你最初定位在数组的第一个位置。

数组中的每个元素代表你在那个位置可以跳跃的最大长度。

判断你是否能到达数组的最后一个位置。

【注】:这个问题有两个方法,一个是贪心和动态规划。

贪心方法时间复杂度为O(N)。

动态规划方法的时间复杂度为为O(n^2)。

我们手动设置小型数据集,使大家阔以通过测试的两种方式。这仅仅是为了让大家学会如何使用动态规划的方式解决此问题。如果您用动态规划的方式完成它,你可以尝试贪心法,以使其再次通过一次。

【题目链接】

www.lintcode.com/en/problem/jump-game/

【题目解析】

我们需要知道能不能移动到最后一个元素位置。

采用贪心法即可,譬如上面的[2, 3, 1, 1, 4],因为初始第一个位置为2,我们先跳1步,剩下1步了,到第二个元素位置,也就是3这个地方,因为3比1大,所以我们可以向后面跳跃3步,直接就到4了。

根据上面的规则,每次跳跃1步,我们可跳跃步数减1,如果新的位置步数大于剩余步数,使用新的步数继续移动,如果可跳跃次数小于0并且还没到最后一个元素,那么失败。

【参考答案】

www.jiuzhang.com/solutions/jump-game/

你可能感兴趣的:(Lintcode116 Jump Game solution 题解)