public class Solution {
public int jump(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
int left = 0;
int right = 0;
int step = 0;
int farthest = 0;
while (right< nums.length - 1) {
step++;
for (int i = left; i <= right; i++) {
if (nums[i] + i > farthest) {
farthest = nums[i] + i;
}
}
left = right + 1;
right = farthest;
}
return step;
}
}
能够测试无法到达的情况:
public class Solution {
public int jump(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
int step = 0;
int maxRange = 0;
int range= 0;
for (int i = 0; i <= maxRange && i < nums.length; i++) {
if (i > range) {
step++;
range = maxRange;
}
maxRange = Math.max(maxRange, nums[i] + i);
}
if (maxRange < nums.length - 1) {
return 0;
}
return step;
}
}