所列题目,均来自网络,解题思路都是本人学习后的小小总结,喜欢的建议收藏,不喜欢拉到。
题目:
给定一个非负整数数组 nums 最初位于数组的 第一个下标 。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标。
题解:
一个数组 int[] nums
所以,需要一个存储最远位置的变量,这样使儿的,在最远位置之前的每一个,都拿出来跟之前最远的比,然后到最后,判断最远的位置能否达到或者超过数组最后的位置。这样就能得出个结果了。
代码大概是这样:
public boolean canJump(int[] nums) {
int max = 0;
int len = nums.length-1;
for(int i=0;i<=max;i ){
max = Math.max(max, nums[i] i);
if(max>=n-1)return true;
}
return false;
}
画图描述一下大概是这样:
位置i=0; 最远的位置 num[0] 0=2 max在0,2中取大 max = 2;
位置i=1; 最远的位置 num[1] 1=1; max在2,1中取大 max = 2;
位置i=2; 最远的位置 num[2] 2=3; max在2,3中取大 max = 3;
结果为真,这里max存的是最远位置,在做for循环时也用max来做上限的约束,这样就不会一直循环到数组的最后
在满足条件时直接返回,这样就不会数组越界。
作为一个编程小白,这两个小坑,我都轻轻地踩了一下下。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved