leetcode Jump Game II

来源:互联网 发布:数码宝贝2知乎 编辑:程序博客网 时间:2024/06/06 07:47

ven 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.

For example:
Given array A = [2,3,1,1,4]

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.)

可将此问题转化为用最少的区间片段实现指定区间内的全覆盖 示例中可以转化为如下片段,  [0, 2], [1, 4], [2, 3], [3, 4]

然后从左往右依次遍历,在前一个片段所包含的区间内,寻找能够扩展最大空间的片段,如[0,2], 可以搜寻以1,2为左边界的片段,然后用能够扩展最大空间的片段与原来的片段合并,然后重复上述步骤。直到覆盖指定区间为止。

class Solution {public:    int jump(int A[], int n) {        if (n <= 0 || A[0] >= n - 1)            return 1;        int right = A[0];        int i = 1;        int j = A[0];        int jump_count = 1;        while (i <= n - 1)        {            for ( ; i <= j; i++)            {                if (i + A[i] > right)                    right = i + A[i];            }            jump_count++;            if (right >= n - 1)                break;            j = right;        }        return jump_count;    }};



0 0
原创粉丝点击