leetcode 55. Jump Game-贪心算法
来源:互联网 发布:淘宝西装原单 编辑:程序博客网 时间:2024/06/05 20:58
原题链接:55. Jump Game
【思路-Java】贪心算法
本题采用贪心算法。
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来最好的选择。也就是说,不从整体最优上加以考虑,他所作出的是在某种意义上的局部最优解。贪心算法和动态规划算法都是由局部最优导出全局最优,这里不得不比较下二者的区别
贪心算法:
1.贪心算法中,作出的每步贪心决策都无法改变,因为贪心策略是由上一步的最优解推导下一步的最优解,而上一部之前的最优解则不作保留。
2.由(1)中的介绍,可以知道贪心法正确的条件是:每一步的最优解一定包含上一步的最优解
动态规划算法:
1.全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有最优解
2.动态规划的关键是状态转移方程,即如何由以求出的局部最优解来推导全局最优解
3.边界条件:即最简单的,可以直接得出的局部最优解
本题用一个数 reach 表示能到达的最远下标,一步步走下去,如果发现在 reach 范围之内某处能达到的范围大于 reach,那么我们就用更大的范围来替换掉原先的 reach,这样一个局部的最优贪心策略,在全局看来也是最优的,因为 局部能够到达的最大范围也是全局能够到达的最大范围:
public class Solution { public boolean canJump(int[] nums) { int reach = nums[0]; for(int i = 1; i < nums.length && reach >= i; i++) if(i + nums[i] > reach) reach = i + nums[i]; //贪心策略 return reach >= (nums.length-1) ? true : false; }}72 / 72 test cases passed. Runtime: 2 ms Your runtime beats 72.95% of javasubmissions.
1 0
- leetcode 55. Jump Game-贪心算法
- LeetCode 55. Jump Game|贪心算法
- leetcode.55.Jump Game(medium)[贪心算法]
- leetcode 55. Jump Game 贪心算法
- LeetCode Jump Game(贪心算法)
- [leetcode]55. Jump Game 贪心
- leetcode 55. Jump Game [贪心]
- LeetCode 之 Jump Game(贪心算法)
- LeetCode 45. Jump Game II|贪心算法
- [LeetCode]45. Jump Game II &&贪心算法
- Leetcode 贪心 Jump Game
- [leetcode][贪心] Jump Game
- leetcode---Jump Game---贪心
- leetcode---jump-game---贪心
- jump game 贪心算法
- 55. Jump Game 【Medium】 贪心算法
- Leetcode 贪心 Jump Game II
- [leetcode][贪心] Jump Game II
- 常用的MIME类型
- POJ1463Strategic game[树形DP]
- leetcode-java-198. House Robber
- service业务返回封装bean支持分页
- 用 GDB 调试程序
- leetcode 55. Jump Game-贪心算法
- Less和Sass
- Climbing Stairs
- 多情自古多悲剧
- BFibonacci
- 剑指Offer----面试题29:扩展----数组中第K大的数字
- Android 获取root后读取短信内容
- 在Nexus7平板上安装Ubuntu Touch(by quqi99)
- PHP~环境配置