跳跃游戏
解题思路:贪心算法+自底向上
class Solution { public int jump(int[] nums) { int end = 0; int maxPosition = 0; int steps = 0; for(int i = 0; i < nums.length - 1; i++){ maxPosition = Math.max(maxPosition, nums[i] + i); if( i == end){ end = maxPosition; steps++; if(end>=nums.length - 1){ break; } } } return steps; } }
第二种方法(性能上比第一种算法差很多)
解题思路:贪心算法+自顶向下
class Solution { public int jump(int[] nums) { int len = nums.length; int step = 0; int position = len - 1; while(position!=0) { for(int i=0;i<len-1;i++) { if(nums[i]+i>=position) { position = i; step++; break; } } } return step; } }