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

跳跃游戏(二)

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;
}

全部评论

相关推荐

合不合适,我自己说了才算
码农索隆:hr:“真执着啊,来我公司当法人吧”
点赞 评论 收藏
分享
舂锋:不能投什么岗都用一份简历,一般都是要看企业的岗位需求来写职业技能或者是项目经历,跟岗位相关的就写多一点。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 11:16
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务