代碼網(wǎng)站模板怎么做今日頭條荊州新聞
【力扣】55. 跳躍游戲
給一個(gè)非負(fù)整數(shù)數(shù)組 nums ,最初位于數(shù)組的第一個(gè)下標(biāo) 。數(shù)組中的每個(gè)元素代表你在該位置可以跳躍的最大長(zhǎng)度。判斷你是否能夠到達(dá)最后一個(gè)下標(biāo),如果可以,返回 true ;否則,返回 false 。
示例 1:
輸入:nums = [2,3,1,1,4]
輸出:true
解釋:可以先跳 1 步,從下標(biāo) 0 到達(dá)下標(biāo) 1, 然后再?gòu)南聵?biāo) 1 跳 3 步到達(dá)最后一個(gè)下標(biāo)。
示例 2:
輸入:nums = [3,2,1,0,4]
輸出:false
解釋:無(wú)論怎樣,總會(huì)到達(dá)下標(biāo)為 3 的位置。但該下標(biāo)的最大跳躍長(zhǎng)度是 0 , 所以永遠(yuǎn)不可能到達(dá)最后一個(gè)下標(biāo)。
提示:
1 <= nums.length <= 1 0 4 10^4 104
0 <= nums[i] <= 1 0 5 10^5 105
題解
走一步就更新可以走最遠(yuǎn)的距離,比最遠(yuǎn)距離小的位置都可以到達(dá)。
public class Solution {public boolean canJump(int[] nums) {int jumpMax = 0;for (int i = 0; i < nums.length; ++i) {//i在能跳到的范圍內(nèi),更新跳最遠(yuǎn)的位置if (i <= jumpMax) {jumpMax = Math.max(jumpMax, i + nums[i]);//大于等于末尾if (jumpMax >= nums.length - 1) {return true;}}}return false;}
}