leetcode:Jump Game II
2014-06-13 00:06
344 查看
给出一维的数据,A[i]表示在第i个位置可以最大步跃为A[i],也就是求出到达数组末端最少要跳几次
刚开始的时候给出了一个O(n^2)的解法,后来超时了,然后优化到o(N)。
是一道dp题目,状态方程如下
在第i次跳跃中,pre为开始位置,假设最远可以跳到next位置
那么在pre-next的区间dp[] = i;
那么第i+1次的跳跃可以就是以next + 1开始,下一次最远可以到的next值就是Max(A[j] + j) pre <= j <= next
刚开始的时候给出了一个O(n^2)的解法,后来超时了,然后优化到o(N)。
是一道dp题目,状态方程如下
在第i次跳跃中,pre为开始位置,假设最远可以跳到next位置
那么在pre-next的区间dp[] = i;
那么第i+1次的跳跃可以就是以next + 1开始,下一次最远可以到的next值就是Max(A[j] + j) pre <= j <= next
public class Solution { public int jump(int[] A) { int[] dp = new int[A.length + 1]; for(int i = 1; i < A.length; ++i){ dp[i] = Integer.MAX_VALUE; } int cur = 1; int pre = 0, next = A[0]; // System.out.println(A.length); for(int i = 1; i < A.length && i <= next; ){ int maxJump = 0; while(i < A.length && i <= next){ dp[i] = cur; if(A[i] + i > maxJump){ maxJump = A[i] + i; } ++i; } cur ++; pre = next + 1; next = maxJump; } return dp[A.length - 1]; } }
相关文章推荐
- Jump Game II (最小步数到达终点,贪心) 【leetcode】
- [Leetcode]Jump Game && Jump Game II
- LeetCode Jump Game II
- LeetCode Jump Game II
- [LeetCode P45] Jump Game II
- LeetCode 55/45 Jump Game I/II-----Greedy**
- leetcode题解-45. Jump Game II
- LeetCode 45 - Jump Game II
- [LeetCode] Jump Game II
- LeetCode-Jump Game II
- leetcode - Jump Game II
- LeetCode-Jump Game II
- LeetCode Jump Game II
- 【leetcode】Jump Game I, II 跳跃游戏一和二
- [leetcode解题记录]Jump Game和Jump Game II
- LeetCode Jump Game II(贪心)
- Leetcode jump Game II
- LeetCode Jump Game II
- [LeetCode] Jump Game II
- LeetCode--jump-game-ii