1、题目:
给你一个非负整数数组 nums
,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true
;否则,返回 false
。
2、分析特点:
- 题目要求:你最初位于数组的 第一个下标 ,判断你是否能够到达最后一个下标 ==> 思维转换:如果我已经到了倒数最后一个位置,到了倒数第二个位置。。。
3、思路:
从终点开始算,判断终点之前是否有位置能到达终点。有,就将当前点当做终点;无,则继续向前判断。当终点与起点重合时,则能从起点跳到终点。
4、代码:
public boolean canJump(int[] nums) {
if(nums.length == 1) return true
let len=nums.length-1
for(let i = nums.length-2;i>= 0;i--){
if(nums[i] >= len-i){
len = i;
}
}
return len == 0;
}
5、复杂度分析:
6、总结:
从终点开始算,判断终点之前是否有位置能到达终点。有,就将当前点当做终点;无,则继续向前判断。当终点与起点重合时,则能从起点跳到终点。
如果本文对你有帮助的话记得给一乐点个赞哦,感谢!