45. Jump Game II

description:

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.

Your goal is to reach the last index in the minimum number of jumps.
Note:

You can assume that you can always reach the last index.

Example:

Example:

Input: [2,3,1,1,4]
Output: 2
Explanation: The minimum number of jumps to reach the last index is 2.
    Jump 1 step from index 0 to 1, then 3 steps to the last index.

answer:

class Solution {
public:
    int jump(vector<int>& nums) {
        int res = 0, n = nums.size(), i = 0, cur = 0;
        while (cur < n - 1) {
            ++res;
            int pre = cur;
            for (; i <= pre; ++i) {
                cur = max(cur, i + nums[i]);
            }
            if (pre == cur) return -1;
        }
        return res;
    }
};

relative point get√:

hint :

从头开始走,每一步都要找到走*步能到达的最远距离,直到到达最后。有一个这样子的事实是说,在现在这个时刻,pre和cur之间的任意一点都是可以走到的。很难描述这个思想啊,就想着几个小球在平面上弹弹弹吧,真的无法描述啊...大佬的思想!!!

上一篇:办理REACH认证多少钱时间要几天


下一篇:Jump Game II -- LeetCode