解法都在代码里,不懂就留言或者私信
class Solution {public boolean canJump(int[] nums) {/**如果就一个位置,你本来就在这,肯定可以跳到*/if(nums.length == 1) {return true;}/**这个题的解题思路是遍历数组,如果当前位置不在之前最大可以跳到的范围内,那这一步直接就到不了,返回false否则试试当前位置+它的值能不能把最大可以跳到的位置变得更远,如果走到最后一个位置得时候这个位置还是最大可以跳到得范围内,那就是可以跳到*//**现在就在0位置,即使不跳也能到0位置,所以max设置为0*/int max = 0;for(int i = 0; i < nums.length; i++) {/**之前跳得最大范围都到不了i,返回false */if(i > max) {return false;}/**如果能跳到看看i位置+它能跳得最大距离能不能把max变大 */max = Math.max(max, i + nums[i]);}/**遍历完数组都还没有返回,说明所有位置都能跳到,返回true */return true;}
}
常数时间或者遍历啥的实在不想优化了,就这样吧