【LeetCode】 jump game I,II解析

来源:互联网 发布:投影互动软件破解 编辑:程序博客网 时间:2024/04/30 09:16

/************************************************************************
*
* 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.
*
*
************************************************************************/

//only pass one time ,get the maxreach class Solution {public:    bool canJump(vector<int>& nums) {         int n=nums.size(),maxreach=0;         for (int i=0; i < n && i <= maxreach && maxreach < n - 1; ++i)            maxreach = max(maxreach,i+nums[i]);         return maxreach>=n-1;    }};

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

class Solution {public:    int jump(vector<int>& nums) {        int i = 0, n = nums.size(), step = 0, end = 0, maxend = 0;        while (end < n - 1) {            step++;            for (;i <= end; i++) {                maxend = max(maxend, i + nums[i]);                if (maxend >= n - 1) return step;            }            if(end == maxend) break;            end = maxend;        }        return n == 1 ? 0 : -1;    }};
0 0
原创粉丝点击