55. Jump Game

来源:互联网 发布:漆黑的特快列车 知乎 编辑:程序博客网 时间:2024/05/23 12:01

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.我的答案  类似深搜,结果超时了 验证过几个答案,是没问题的,就是时间限制上超时了

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



2. 别人的答案 用的贪心算法 真是awesome!

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




0 0
原创粉丝点击