leetcode中等5545跳跃游戏12
Posted qq_40707462
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode中等5545跳跃游戏12相关的知识,希望对你有一定的参考价值。
55、跳跃游戏(能否到达)
思路:贪心
顺序遍历数组,记录每一步的最大覆盖范围cover,cover 大于数组长度时返回true;
注意:通常 cover 是比当前遍历到的位置更远的,如果 cover 小于 当前遍历位置,代表无法继续向前,直接返回 false
class Solution {
public boolean canJump(int[] nums) {
int cover=0;
for(int i=0;i<nums.length;i++){
if(i>cover) return false;
cover=Math.max(cover,i+nums[i]);
if(cover>=nums.length-1) return true;
}
return false;
}
}
45、跳跃游戏2(最小步数)
思路:
遍历移动下标达到了当前覆盖的最远距离下标时,步数就要加一,来增加覆盖距离
class Solution {
public int jump(int[] nums) {
if (nums == null || nums.length == 0 || nums.length == 1) {
return 0;
}
int count=0;
int curDistance = 0;//当前的覆盖最大区域
int maxDistance = 0;//最大的覆盖区域
for(int i=0;i<nums.length;i++){
maxDistance=Math.max(maxDistance,i+nums[i]);
//说明当前一步,再跳一步就到达了末尾
if (maxDistance>=nums.length-1){
count++;
return count;
}
//走到当前覆盖的最大区域时,更新下一步可达的最大区域
if (i==curDistance){
curDistance = maxDistance;
count++;
}
}
return count;
}
}
以上是关于leetcode中等5545跳跃游戏12的主要内容,如果未能解决你的问题,请参考以下文章