题解 | 【模板】前缀和

【模板】前缀和

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        // while (in.hasNextInt()) { // 注意 while 处理多个 case
        //     int a = in.nextInt();
        //     int b = in.nextInt();
        //     System.out.println(a + b);
        // }
        int n=scan.nextInt();//数组长度
        int q=scan.nextInt();//询问次数
        int[] arr=new int[n+1];//创建数组
        arr[0]=0;
        for(int i=1;i<n+1;i++){
            arr[i]=scan.nextInt();
        }
        int[][] ret=new int[q][2];
        for(int i=0;i<q;i++){
            ret[i][0]=scan.nextInt();
            ret[i][1]=scan.nextInt();
        }
        long[] dp=new long[n+1];//将前缀合数组设置成Long,防止溢出
        dp[0]=0;
        // 创建 前缀和数组,有效下标从1开始
        for(int i=1;i<n+1;i++){
            dp[i]=dp[i-1]+arr[i];
        }
        for(int i=0;i<q;i++){
            int l=ret[i][0];
            int r=ret[i][1];
           long tmp = dp[r] - dp[l-1];
           System.out.println(tmp);
        }

    }
}

全部评论

相关推荐

2025-12-31 14:31
湖南科技大学 Web前端
是阿亮吖:一个是这个时间招人比较少,另一个是沟通太少了。六十多份太养生了,最起码沟通个五六百份吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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