題目描述:
解題思路:
class
solution
:def
canjump
(self, nums: list[
int])-
>
bool:if
len(nums)==1
:return
true
max_location =
0for i in
range
(len
(nums)-1
):if max_location < i:
return
false
temp = nums[i]
+ i if temp > max_location:
max_location = temp
if max_location >=
len(nums)-1
:return
true
return
false
這裡我們可以對上面的**進行一點點優化,因為上面的**它需要執行遍歷整個陣列,而我們通過分析這個題目,我們可以發現有可能乙個nums
有很多種方法能夠完成這個跳躍遊戲,所以我們只需要求出一種情況,就可以斷定這個遊戲成功。那麼我們就可以不需要全部遍歷這個陣列,只要找到乙個max_location
能夠滿足條件,就可以返回true
了。這裡我們就做了乙個小改變,把判斷語句放入for
迴圈中就可以了。雖然提交後速度跟上面差別不大,但我覺得如果陣列長度變長,時間複雜度會大大降低,差別就會顯現出來。
LeetCode演算法題庫 兩數之和
給定乙個整數陣列 nums 和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。注意 你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。public static int twosum int nums,int target map....
leetcode演算法練習 55 跳躍遊戲
所有題目源 git位址 題目給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2 3,1 1,4 輸出 true 解釋 我們可以先跳 1 步,從位置 0 到達 位置 1 然後再從位置 1 跳 3 步到達...
演算法實踐 leetcode55 跳躍遊戲
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。輸入 2,3,1,1,4 輸出 true 解釋 我們可以先跳 1 步,從位置 0 到達 位置 1,然後再從位置 1 跳 3 步到達最後乙個位置。輸入 3,2,1,0,4...