所列題目,均來自網絡,解題思路都是本人學習後的小小總結,喜歡的建議收藏,不喜歡拉到。
題目:
給定一個非負整數數組 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來做上限的約束,這樣就不會一直循環到數組的最後
在滿足條件時直接返回,這樣就不會數組越界。
作為一個編程小白,這兩個小坑,我都輕輕地踩了一下下。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!