标签:leetcode55 游戏 nums int 复杂度 一步 boolean 跳跃 true
题目描述:
解题方法:动态规划
动态规划解题步骤:
确定状态:
-
- 最后一步:如果能跳到最后一个下标,我们考虑他的最后一步到n-1(最后一个下标),这一步是从 i 跳过来的,i<n-1;
这需要满足两个条件:
- 可以跳到 i ;
- 最后一步跳跃的距离 <= 从i可以跳跃的最大距离,即 n-1-i <= nums[i]
-
- 子问题:我们需要知道能不能跳到i
状态:设f[j]能不能跳到石头j
转移方程:
初始条件和边界情况:
初始条件:f[0] = True,因为一开始就在0位置
计算顺序:
计算:f[1],f[2],...,f[n-1]
时间复杂度:O(n2),空间复杂度(数组大小):O(n)
代码:
public boolean canJump(int[] nums) { int n = nums.length; boolean[] f = new boolean[n]; f[0] = true; for(int j = 1; j < n; j++){ f[j] = false; for(int i = 0; i < j; i++){ if(f[i] && i + nums[i] >= j){ f[j] = true; break; } } } return f[n-1]; }
标签:leetcode55,游戏,nums,int,复杂度,一步,boolean,跳跃,true 来源: https://www.cnblogs.com/LXXin6973/p/16621095.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。