Lintcode116 Jump Game solution 題解

【題目描述】

Given an array of non-negative integers, you are initially positioned at the first index of the array.

Each element in the array represents your maximum jump length at that position.

Determine if you are able to reach the last index.

給出一個非負整數數組,你最初定位在數組的第一個位置。

數組中的每個元素代表你在那個位置可以跳躍的最大長度。

判斷你是否能到達數組的最後一個位置。

【注】:這個問題有兩個方法,一個是貪心和動態規劃。

貪心方法時間複雜度爲O(N)。

動態規劃方法的時間複雜度爲爲O(n^2)。

我們手動設置小型數據集,使大家闊以通過測試的兩種方式。這僅僅是爲了讓大家學會如何使用動態規劃的方式解決此問題。如果您用動態規劃的方式完成它,你可以嘗試貪心法,以使其再次通過一次。

【題目鏈接】

http://www.lintcode.com/en/problem/jump-game/

【題目解析】

我們需要知道能不能移動到最後一個元素位置。

採用貪心法即可,譬如上面的[2, 3, 1, 1, 4],因爲初始第一個位置爲2,我們先跳1步,剩下1步了,到第二個元素位置,也就是3這個地方,因爲3比1大,所以我們可以向後面跳躍3步,直接就到4了。

根據上面的規則,每次跳躍1步,我們可跳躍步數減1,如果新的位置步數大於剩餘步數,使用新的步數繼續移動,如果可跳躍次數小於0並且還沒到最後一個元素,那麼失敗。

【參考答案】

http://www.jiuzhang.com/solutions/jump-game/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章