题解 | #跳跃游戏(二)#

跳跃游戏(二)

https://www.nowcoder.com/practice/58e31b785f4b4ced9695dd4fcd60c1ce

// 掉转思维,从后往前走,  (上一个,当前一个,下一个)
// 从后往前遍历,若下一个能够得上当前这个则选取它。
// 因为从前往后走时,如果上一个能够的上下一个,则上一个一定能够得上当前一个,因为是非负整数,选了不会亏
#include<iostream>
using namespace std;
const int N=1e5+6;
int arr[N];
int n;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>arr[i];
    }
    int ind=n-1,ans=arr[n-1];
    for(int i=n-2;i>=0;i--){
        if(i+arr[i]>=ind){
            ind=i;
            ans+=arr[i];
        }
    }
    if(ind==0) cout<<ans;
    else cout<<"-1";

    return 0;
}

全部评论

相关推荐

无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务