給定乙個非負整數陣列,您最初位於陣列的第乙個索引處。陣列中的每個元素表示您在該位置的最大跳躍長度。
確定您是否能夠達到最後的索引。
例如: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...