題目:
給定一個非負整數陣列 nums
,你最初位於陣列的第一個下標。陣列中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達陣列的最後一個位置。
範例:
Input: nums = [2,3,1,1,4]
Output: true
Explanation: 從下標 0 跳到 1(跳 1 步),然後從下標 1 跳 4 步到達最後一個位置。
Input: nums = [3,2,1,0,4]
Output: false
Explanation: 你總是無法到達最後一個位置,因為在下標 3,最大跳躍範圍為 0,無法越過它。
限制條件:
nums.length
<= 10^4nums[i]
<= 10^5實作:
class Solution {
public:
bool canJump(vector<int>& nums) {
int maxReach = 0;
for (int i = 0; i < nums.size(); i++) {
if (i > maxReach) {
return false;
}
maxReach = max(maxReach, i + nums[i]);
if (maxReach >= nums.size() - 1) {
return true;
}
}
return false;
}
};