LeetCode

来源:互联网 发布:淘宝收藏夹默认公开吗 编辑:程序博客网 时间:2024/05/17 00:00

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.


哇塞塞,自己做出了dp,有点小激动。

dp[i]表示到位置i为止,最多还能走多少步。

时间复杂度O(n),空间复杂度O(n)。其实不用创建整个dp数组,只要保存前一个值就行了。

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

原创粉丝点击