15天大厂真题带刷 - ZT18【模板】静态区间和 | Go

【模板】静态区间和(前缀和)

https://www.nowcoder.com/practice/ac79a1a4a66646cc87525d6faa86e021

题意

给出一个长度为n的数组和q次询问,每次询问求区间[l,r]的数组的元素和。

思路

数据范围n和q都是1e6,数组元素<=1e9,暴力的做法会超时,考虑用前缀和优化。在输入的时候维护sum数组,要注意用long long / int64 ,对于每次询问直接输出sum[r] - sum[l-1]即可。

C++代码

#include <iostream>
using namespace std;

const int maxn = 1e6+10;

int main() {
    long long n,q,l,r,x,sum[maxn];
    cin>>n>>q;
    for(int i=1;i<=n;i++){
        cin>>x;
        sum[i] = sum[i-1] + x;
    }
    while(q--){
        cin>>l>>r;
        cout<<sum[r] - sum[l-1]<<endl;
    }

}
// 64 位输出请用 printf("%lld")

Go代码

没过(有没有大佬能帮忙看下为啥

package main

import (
    "fmt"
)

func main() {
    var n,q int
    var x int64
    fmt.Scan(&n,&q)
    sum := make([]int64,n+1)
    for i := 1; i <= n; i ++ {
        fmt.Scan(&x)
        sum[i] = sum[i-1] + x
    } 
    for i := 1; i <= q; i ++ {
        var l,r int 
        fmt.Scan(&l,&r)
        fmt.Println(sum[r] - sum[l-1])
    }
}

#牛客创作赏金赛#
15天大厂真题带刷Go题解 文章被收录于专栏

15天大厂真题带刷Golang题解

全部评论

相关推荐

昨天 11:15
中南大学 Java
好可爱的hr姐姐哈哈哈哈
黑皮白袜臭脚体育生:兄弟们貂蝉在一起,吕布开了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 12:10
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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