給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。
陣列中的每個元素代表你在那個位置可以跳躍的最大長度。
判斷你是否能到達陣列的最後乙個位置。
樣例
樣例 1
輸入 :[2
,3,1
,1,4
]輸出 :
true
樣例 2
輸入 :[3
,2,1
,0,4
]輸出 :
false
注意事項
這個問題有兩個方法,乙個是貪心和 動態規劃。
貪心方法時間複雜度為o(n)。
動態規劃方法的時間複雜度為為o(n^
2)。我們手動設定小型資料集,使大家可以通過測試的兩種方式。這僅僅是為了讓大家學會如何使用動態規劃的方式解決此問題。如果您用動態規劃的方式完成它,你可以嘗試貪心法,以使其再次通過一次。
深度搜尋:從第乙個開始,對其中的每一步進行檢索,如果可以到達最後一步,則正確
class
solution
void
dfs(vector<
int>
&a,int index,
bool
&judge)
if(index>=a.
size()
||a[index]==0
)for
(int i =
1; i <= a[index]
; i++)}
};
方法二:設定乙個判斷陣列,對每乙個可以到達的地方賦值為true,看最後乙個數是否為true即可
bool
canjump
(vector<
int>
&a)}
}return result[result.
size()
-1];
}
兩次過 Lintcode 116 跳躍遊戲
給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。a 2,3,1,1,4 返回 true.a 3,2,1,0,4 返回 false.這個問題有兩個方法,乙個是貪心和動態規劃。貪心方法時間複雜度為o n 動態規劃...
116 跳躍遊戲
給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。注意事項 這個問題有兩個方法,乙個是貪心和動態規劃。貪心方法時間複雜度為o n 動態規劃方法的時間複雜度為為o n 2 我們手動設定小型資料集,使大家可以通過測...
LintCode 跳躍遊戲 I VS跳躍遊戲 II
陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。分析 方法一 基於動態規劃的做法,時間複雜度o n 2 陣列dp i 表示能否到達下標為i的位置,對於從下標i 1開始的每乙個位置,都從下標j 0開始到i 1判斷能否到達j,並且判斷從j開始最遠能否跳到或超過i的...