給定乙個非負整數陣列,你最初位於陣列的第乙個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後乙個位置。
示例1:
輸入:[2
,3,1
,1,4
]輸出:
true
解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1
, 然後再從位置 1 跳 3 步到達最後乙個位置。
示例2:
輸入:[3
,2,1
,0,4
]輸出:
false
解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後乙個位置。
思路:盡可能到達最遠位置(貪心)。
如果能到達某個位置,那一定能到達它前面的所有位置。
方法:初始化最遠位置為0,然後遍歷陣列,如果當前位置能到達,並且當前位置+跳數》最遠位置,就更新最遠位置。最後比較最遠位置和陣列長度。
複雜度:時間複雜度o(n),空間複雜度o(1)。
class solution:
def canjump
(self, nums)
: max_i =
0 #初始化當前能到達最遠的位置
for i, jump in enumerate
(nums)
: #i為當前位置,jump是當前位置的跳數
if max_i>=i and i+jump>max_i: #如果當前位置能到達,並且當前位置+跳數》最遠位置
max_i = i+jump #更新最遠能到達位置
return max_i>=i
python lintcode116 跳躍遊戲
給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。這個問題有兩個方法,乙個是貪心和動態規劃。貪心方法時間複雜度為o n 動態規劃方法的時間複雜度為為o n 2 我們手動設定小型資料集,使大家可以通過測試的兩種方...
LeetCode刻意練習28 跳躍遊戲
題目 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。方法一 回溯法 有一組資料超時。遍歷每個元素,對於每個元素i,先跳最大的步數nums i 到達下乙個元素next。如果能夠跳出這個陣列 nums i i nums...
大爽Python入門練習題 2 8 跳躍輸出
大爽python入門練習題總目錄 第二章 中期練習題 中等 第8題 簡介 實現乙個函式jump print lst 接受乙個陣列 列表 lst作為引數。先將lst的首項作為當前項,輸出當前項,並將索引往後移動當前項的值,最後一項,索引往後移動一格,則移動到首項,相當於把列表看作乙個環 然後將索引對應...