在跳跃游戏 II的基础上做了些修改
class Solution {
public:
bool canJump(vector<int>& nums) {
int n = 0, i;
if(nums.size() == 1)
return true;
if(nums[0] == 0)
return false;
while(n < nums.size()-1){
int max = -1, max_n = -1;;
for(i = n + 1; i <= n + nums[n] && i < nums.size(); i++){
if(i + nums[i] >= max){
max = nums[i] + i;
max_n = i;
}
}
if(i == nums.size())
return true;
n = max_n;
if(nums[n] == 0)
return false;
}
return true;
}
};
Accepted
166/166 cases passed (48 ms)
Your runtime beats 78.96 % of cpp submissions
Your memory usage beats 63.69 % of cpp submissions (47.1 MB)
class Solution {
public:
bool canJump(vector<int>& nums) {
int right = nums.size();
int left = 0;
for(int i = 0; i < right; i++){
if(i <= left){
left = max(left, nums[i] + i);
if(left >= right - 1)
return true;
}
}
return false;
}
};
Accepted
166/166 cases passed (44 ms)
Your runtime beats 90.22 % of cpp submissions
Your memory usage beats 74.16 % of cpp submissions (47.1 MB)