[LeetCode-Algorithms-55] "Jump Game" (2017.11.7-WEEK10)

来源:互联网 发布:如何使用大数据 编辑:程序博客网 时间:2024/06/14 02:39

题目链接:Jump Game


  • 题目描述:

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.


(1)思路:注意当前数字表示的是能跳的最大步数,也就是小于等于这个数字的地方都可以到达。先依次检查数字,如果不是0,就往前跳最大步数,看看是否可以超过数组末位;如果是0,就往回找,找到一个位置,当前位置序号加上它的数字可以超过刚才数字为0的位置。如果一直回退到了上一跳起点,那么就无法到达。还要注意[0, 1],即一开始就是0的特殊情况。

(2)代码:

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

(3)提交结果:

这里写图片描述

原创粉丝点击