题解 | #下标数组#

下标数组

https://www.nowcoder.com/practice/2eac3a5a8cee42da8de003ecca29e271

#include <bits/stdc++.h> 



using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> a(n+1);

    for(int i = 1; i <= n; i++) cin >> a[i];

    unordered_map<int,int> cnt;
    
    long long ret = 0;
    for(int i = 1; i <= n; i++){
        if(cnt.find(i-a[i]) != cnt.end()){
            ret += cnt[i-a[i]];
        }
        cnt[a[i] - i]++;;
    }
    cout << ret << endl;
    return 0;
}

全部评论

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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