题目
给定一个非负整数数组 nums
,你最初位于数组的 第一个下标 。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标。
题解
到达最后一个下标需要什么条件?
跳过的长度要大于等于数组长度
什么情况下不能到达最后一个下标?
到达某个位置后,不继续往后跳了,比如到了某个位置,可跳跃长度为0,就不会往后跳了,跳到最后一个位置就无从谈起。
我怎么知道总共跳跃的长度有没有超过数组的长度?
只能从头到尾遍历数组,记录最多能跳多远,会不会在某个位置停止跳跃,如果不会停止跳跃,肯定能跳到终点。
停止跳跃有什么特征?怎么判断有没有停止跳跃?
如果记录最远能够跳到的位置,停止跳跃的时候,记录的位置不会再改变了。
在遍历数组检查最多能跳多远的时候,如果发现数组当前遍历的下标超过记录的最远跳过的位置,说明跳跃停止了。因为遍历数组相当于每次跳1步,是最低速度,如果能持续跳跃,不会低于这个速度,最低也是持平。
代码
1 | class Solution { |