leetcode 55 跳躍遊戲

2022-08-17 02:18:16 字數 1893 閱讀 3198

本文我將從三種方法來編碼解決這道題(動態規劃(topdown)、動態規劃(downup)、貪心)

遞迴的過程,把所有的可能展開;探索所有的路是否能走通,將結果往下壓

那麼如何將動態規劃加入遞迴裡呢?

假設:3不是開始位置,3前面還有以一些資料,但是,一旦我們認定了1是一條思路之後,我們可以認為:只要從前面的地方(不管是從哪個地方)只要到了1,那麼就不用繼續往下走了,這條路肯定是不同的,直接返回即可。

首先,我們需要建立乙個**

小二迫不及待地為大家上了**

var canjump =function (nums) 

else

if(memo[position] === -1

)

//定義乙個變數maxjump用來存放跳躍步數(防止越界)

const maxjump = math.min(position + nums[position],totallength -1

)

//遍歷所有的步數

for(let i = position +1;i<=maxjump;i++)

}//如果所有的路都嘗試了,仍沒有返回true,就將此位置置為-1(不通),

//將false往上傳

memo[position] = -1

return

false

} let result = jump(0)

return

result

};

//

動態規劃(downup)

var canjump =function (nums)

}}

//如果順利的遍歷到了第一位,且為1,就代表成功了

* 1.定義乙個變數maxjump,等於陣列的長度-1

* 2.從後往前遍歷,判斷前一位的值+索引的和是否大於等於maxjump

* 如果大於等於的話說明前一位一定能走到後面一位

* 3.大於等於情況下:maxjump變為前一位的索引

* 4.如果小於的話,就放棄前一位,繼續往前

* 5.for迴圈遍歷完成之後,判斷maxjump是否等於0,

* 等於的話返回true,否則返回false

* [3,1,0,2,4]計算過程

*  0,1,2,3,4

* 第一步:maxjump = 4

* 第二步:2+3=5 >= 4,maxjump = 3

* 第三步:0+2=2 <3 ,繼續往前

* 第四步:1+1=2 <3,繼續往前

* 第五步: 3+0=3 >=3,maxjump =0,返回true

var canjump = function(nums) 

} return maxjump === 0

};

LeetCode55 跳躍遊戲

leetcode55.跳躍遊戲 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入...

LeetCode 55 跳躍遊戲

題目鏈結 題目描述 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。輸入 3,2,1,0,4 輸出 ...

LeetCode 55 跳躍遊戲

問題 給定乙個非負整數陣列,你最初位於陣列的第乙個位置,陣列中的每個元素代表你在該位置可以跳躍的最大長度,判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入 3,2,1,0,4 輸出...