题目:
题解:
public int jump(int[] nums) {
if (nums.length == 1) {
return 0;
}
// 最大步数
int count = 0;
// 当前覆盖最大距离
int cover = 0;
// 下一步覆盖最大距离
int nextCover = 0;
for (int i = 0; i < nums.length - 1; i++) {
nextCover = Math.max(nextCover, i+nums[i]);
// 走到当前覆盖最大距离,需要走下一步
if (i == cover) {
// 更新当前最大覆盖距离
cover = nextCover;
count++;
}
}
return count;
}
时间复杂度:O(n)