tft每日頭條

 > 遊戲

 > 适用于遊戲的算法

适用于遊戲的算法

遊戲 更新时间:2024-11-30 19:48:50

所列題目,均來自網絡,解題思路都是本人學習後的小小總結,喜歡的建議收藏,不喜歡拉到。

題目:

給定一個非負整數數組 nums 最初位于數組的 第一個下标

數組中的每個元素代表你在該位置可以跳躍的最大長度。

判斷你是否能夠到達最後一個下标。

題解:

一個數組 int[] nums

适用于遊戲的算法(算法曲解-跳躍遊戲)1

  1. 不管咋整,數組都得先遍曆個差不多,才能知道到底行不行,
  2. 遍曆到每個位置的時候,都能确定還能不能繼續向下走,如果能,能走多遠
  3. 如果遍曆的一個位置走得不遠,或者走不了,而之前遍曆的位置能走很遠,那麼,有效的就是走得更遠那個

所以,需要一個存儲最遠位置的變量,這樣使兒的,在最遠位置之前的每一個,都拿出來跟之前最遠的比,然後到最後,判斷最遠的位置能否達到或者超過數組最後的位置。這樣就能得出個結果了。

代碼大概是這樣:

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;

}

畫圖描述一下大概是這樣:

适用于遊戲的算法(算法曲解-跳躍遊戲)2

位置i=0; 最遠的位置 num[0] 0=2 max在0,2中取大 max = 2;

适用于遊戲的算法(算法曲解-跳躍遊戲)3

位置i=1; 最遠的位置 num[1] 1=1; max在2,1中取大 max = 2;

适用于遊戲的算法(算法曲解-跳躍遊戲)4

位置i=2; 最遠的位置 num[2] 2=3; max在2,3中取大 max = 3;

結果為真,這裡max存的是最遠位置,在做for循環時也用max來做上限的約束,這樣就不會一直循環到數組的最後

在滿足條件時直接返回,這樣就不會數組越界。

作為一個編程小白,這兩個小坑,我都輕輕地踩了一下下。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关遊戲资讯推荐

热门遊戲资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved