jump game(跳躍遊戲)

2021-08-19 20:37:06 字數 1128 閱讀 5442

給定乙個非負整數陣列,您最初位於陣列的第乙個索引處。

陣列中的每個元素表示您在該位置的最大跳躍長度。

確定您是否能夠達到最後的索引。

例如:a = [2,3,1,1,4],returntrue。

a = [3,2,1,0,4],returnfalse。

/**

*貪心演算法

*/public

class

solution

public

boolean

canjump(int a, int index)

return flag;

}}

給定乙個非負整數陣列,您最初位於陣列的第乙個索引處。

陣列中的每個元素表示您在該位置的最大跳躍長度。

你的目標是達到最小跳躍次數的最後乙個索引。

例如:給定陣列a = [2,3,1,1,4]

跳到最後乙個索引的最小跳數為2。 (從索引0到1跳轉1步,然後3步到最後乙個索引。)

/**

*貪心演算法

*從開始位置到開始位置能走到的最大距離之間構成了一塊區域,然後我們開始一格一格走,

*每走一下重新整理一下當前這塊區域能到的最大位置,如果走到從開始位置走到了furthest_pre那我們也重新整理出了最大的furthest_cur,

*如果furthest_cur比終點大,那恭喜!再跳一不就到終點了!可以開始跳一步咯!

*然後重複上述的動作,直到到達終點。

*/public

intjump(int a)

if(dp[a.length - 1] != 0) break; // 當第一次到達終點時,肯定是到達終點最短的步數

}return dp[a.length - 1];

}

/**

*動態規劃

*/public

class

solution

//狀態轉移方程

for(int i=n-2;i>=0;i--)}}

return dp[0];

}}

題目1來自牛客網leetcode

題目2來自牛客網leetcode

55 45 Jump Game 跳躍遊戲

思路 貪心演算法,每次記錄可以跳到的最遠距離。要理解這個演算法,首先明白,這個題只要我們求跳數,怎麼跳,最後距離是多少,都沒讓求的。大牛這個演算法的思想主要是,掃瞄陣列 廢話。以確定當前最遠能覆蓋的節點,放入curr。然後繼續掃瞄,直到當前的路程超過了上一次算出的覆蓋範圍,那麼更新覆蓋範圍,同時更新...

LintCode 跳躍遊戲 I VS跳躍遊戲 II

陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。分析 方法一 基於動態規劃的做法,時間複雜度o n 2 陣列dp i 表示能否到達下標為i的位置,對於從下標i 1開始的每乙個位置,都從下標j 0開始到i 1判斷能否到達j,並且判斷從j開始最遠能否跳到或超過i的...

LintCode Jump Game 跳躍遊戲

給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。樣例 a 2,3,1,1,4 返回 true.a 3,2,1,0,4 返回 false.注意 這個問題有兩個方法,乙個是貪心和 動態規劃。貪心方法時間複雜度為o...