贪心之跳跃
#include<bits/stdc++.h>
using namespace std;
//跳跃游戏,给定一个非负整数数组,你最初位于数组的第一个位置。
//数组中的每个元素代表你在该位置可以跳跃的最大长度。
//判断你是否能够到达最后一个位置。
class Solution{
public:
bool isJump(vector<int>& nums){
int cover=0;
//定义cover为最大覆盖范围
if(nums.size()==1) return true;
for(int i=0;i<=cover;i++){
//在cover范围内遍历
cover=max(i+nums[i],cover);
//比较是直接走一个cover比较大 ,还是往后位置再走一个 num[i]大
if(cover>=nums.size()-1) return true;
//如果覆盖完了说明可以走到尽头
}
return false;
//否则不可以走到
}
};
int main(){
vector<int> v;
int n;
cin>>n;
for(int i=0;i<n;i++){
int num;
cin>>num;
v.push_back(num);
}
Solution solution;
if(solution.isJump(v)) cout<<"true";
else cout<<"false";
return 0;
}
欢迎批评指正!