您好,登錄后才能下訂單哦!
本篇內容主要講解“JavaScript怎么解決跳躍游戲算法題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JavaScript怎么解決跳躍游戲算法題”吧!
題目:給定一個非負整數數組,你最初位于數組的第一個位置。數組中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最后一個位置。
示例 1:
輸入: [2,3,1,1,4]
輸出: true
解釋: 從位置 0 到 1 跳 1 步, 然后跳 3 步到達最后一個位置。
示例 2:
輸入: [3,2,1,0,4]
輸出: false
解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 ,
所以你永遠不可能到達最后一個位置。
通過觀察發現:
如果數組中不存在0,一定可以跳到最后。如果數組中存在0的情況下,要跳到最后必須滿足以下條件,從0前邊的某一個位置上開始跳躍一定能跳過這個0才可以。
例如例2中的數組,如果是以下幾種情況就可以跳到最后:
1、[4,2,1,0,4]
2、[3,3,1,0,4]
3、[3,2,2,0,4]
發現了什么規律呢?游戲者所在的位置的數值一定要大于0所在位置索引值與當前位置索引值的距離差。
4>3-0;4所在的位置索引值為0,距離0的索引值相差3,4>3,所以可以跳過0,依次類推
3>3-1;
2>3-2;
找到了這道題的核心解法之后,大體思路就是,找出數組中所有0的位置,并且判斷此位置之前的所有數字是否能跳過0的位置。代碼如下:
var canJump = function(nums) {
var canJump0List = [];
for (var i = 0; i < nums.length - 1; ++i) {
if (nums[i] === 0) {
//找到0所在位置,標記為false
var canJump0 = false;
//進行判斷,將此位置之前數字進行判斷,只要有一個能滿足條件就可以跳過這個0
for (var j = i - 1; j >= 0; --j) {
// 游戲者所在的位置的數值一定要大于0所在位置索引值與當前位置索引值的距離差
if (nums[j] > i - j) {
canJump0 = true;
break;
}
}
//數組中可能有多個0;所以講所有0判斷的結果放入一個數組
canJump0List.push(canJump0);
}
}
//最后對數組進行判斷,只要有一個不滿足條件返回false,即不能跳到最后
for (var i = 0; i < canJump0List.length; ++i) {
if (!canJump0List[i]) {
return false;
}
}
return true;
};
到此,相信大家對“JavaScript怎么解決跳躍游戲算法題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。