本文我將從三種方法來編碼解決這道題(動態規劃(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 輸出...