
给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标。
示例:
输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。
思路:
要先理解题意
你刚开始处于的位置是nums[ 0 ],然后你能跳的这个距离小于或者等于当前数。
跳到的下一个位置也是如此,看是否可以跳到最后
很明显,就是算能跳最远的能不能跳到嘛,最远的都跳不到,别的也跳不到了
复杂度:
时间复杂度:O(n)
空间复杂度:O(1)
代码:public boolean canJump(int[] nums) {
//能跳的最远距离
int maxL = 0;
for(int i = 0;imaxL) return false;
//其实是有点动态规划的意思在里面的
maxL = Math.max(maxL,i+nums[i]);
}
return true;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)