題目描述
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後乙個位置。
示例 1:
輸入:[2
,3,1
,1,4
]輸出:
true
解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1
, 然後再從位置 1 跳 3 步到達最後乙個位置。
示例 2:
輸入:[3
,2,1
,0,4
]輸出:
false
解釋: 無論怎樣,你總會到達索引為 3 的位置。
但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後乙個位置。
思路:
1.回溯,這是乙個低效的解決方法。我們模擬從第乙個位置跳到最後位置的所有方案。從第乙個位置開始,模擬所有可以跳到的位置,然後從當前位置重複上述操作,當沒有辦法繼續跳的時候,就回溯;
時間複雜度:o(2^n)
2.貪心,從倒數第二個元素遍歷陣列,判斷當能元素否到達要到達的元素(nums[pos]),要到達的元素初始為最後乙個元素,判斷條件即為:nums[i]>=pos-i(當前元素的值為在此點時可跳的最大步數,所以只要當前元素的值大於等於當前點到要到達的點的索引差,表示可以到達),之後更新pos為i,i- -,直到遍歷完陣列,返回pos==0;
時間複雜度:o(n);
**:
public
boolean
canjump
(int
nums)
// pos表示需要到達的位置
int pos = nums.length -1;
for(
int i = nums.length -
2; i >=
0; i--)}
return pos ==0;
}
LeetCode55 跳躍遊戲
leetcode55.跳躍遊戲 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入...
LeetCode 55 跳躍遊戲
題目鏈結 題目描述 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。輸入 3,2,1,0,4 輸出 ...
LeetCode 55 跳躍遊戲
問題 給定乙個非負整數陣列,你最初位於陣列的第乙個位置,陣列中的每個元素代表你在該位置可以跳躍的最大長度,判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入 3,2,1,0,4 輸出...