2 //本题属于简单的动态规划问题。 #include using namespace std; int function(int a[],int n) { int i; int temp=0; for(i=n-2;i>=0;i--) { if(a[i]+i>=n-1)//找到第一个能够一步到达最后一位素组下标的位置。 temp=i;//记录该位置的下标 } if(temp>0) return 1+function(a,te...
思路一: 使用动态规划的想法,用额外的数组记录可以到达的位置,然后通过reach[n-1]来判断 可以解题,但是速度太慢。 1. 2. 3. 4. 5. 6. 7. class Solution { public: bool canJump(vector<int>& nums) { int n=nums.size(); if(n<2) return true; vector<bool> reach(n,false); reach[0]=tru...
1 <= d <= arr.length 动态规划 动态规划的状态表示 dp[i] 表示以arr[i]为起点的最多跳跃次数。 动态规划的转移方程 以左跳为例 dp[i]=max(dp[j]+1),j的范围 动态规划的初始值 全为1。 动态规划的填表顺序 arr[i]从小大到 动态规划的返回值 dp的最大值 鸡肋的优化 无论是左跳还是右跳,都只...
LeetCode 55. Jump Game一个数组存储了非负整型数据,数组中的第i个元素nums[i],代表了可以从数组第i 个位置最多向前跳跃nums[i]步;已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置? 例如: nums = [2, 3, 1, 1, 4] ,可以从nums[0] = 2 跳跃至 nums[4] = ...