7.一维差分

一维差分

前缀和的逆运算

题目:
java 复制代码
 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 输入 n 和 m
        int n = sc.nextInt();
        int m = sc.nextInt();
        // 数组定义
        int[] a = new int[n + 1];  // a[1] 到 a[n] 为有效数据
        int[] b = new int[n + 1];  // b[1] 到 b[n] 为有效数据
        // 输入数组 a
        for (int i = 1; i <= n; i++) {
            a[i] = sc.nextInt();
        }
        // 初始化差分数组 b
        for (int i = 1; i <= n; i++) {
            insert(b, i, i, a[i]);
        }
        // 处理 m 次区间操作
        while (m-- > 0) {
            int l = sc.nextInt();
            int r = sc.nextInt();
            int c = sc.nextInt();
            insert(b, l, r, c);
        }
        // 计算并输出最终结果
        for (int i = 1; i <= n; i++) {
            b[i] += b[i - 1];
            System.out.print(b[i] + " ");
        }
        sc.close();
    }

    // 区间更新操作
    private static void insert(int[] b, int l, int r, int c) {
        b[l] += c;
        if (r + 1 <= b.length - 1) {
            b[r + 1] -= c;
        }
    }
相关推荐
老友@2 分钟前
解决Jenkins使用 Git 参数插件拉取 commit 列表缓慢问题
java·运维·git·性能优化·jenkins·commit
tyler-泰勒9 分钟前
C++: string(二)
数据库·c++·算法
打不了嗝 ᥬ᭄9 分钟前
3步实现贪吃蛇
c语言·数据结构·c++·算法·链表
mmz120711 分钟前
深搜复习(c++)
c语言·c++·算法
灼华十一21 分钟前
算法编程题-golang语言协程池
算法·面试·golang
basic_code29 分钟前
Spring boot 整合mybatis-plus
java·spring boot·mybatis·mybatis-plus
小宋是个程序员32 分钟前
用Java反射(Reflection)解释Spring Boot 中依赖注入的原理
java·开发语言·spring boot
sukalot38 分钟前
windows C#-创建记录类型(下)
java·服务器·前端
namedlock1 小时前
Failed to create a temp file - Jenkins 无法创建任务
java·servlet·jenkins
学习同学2 小时前
【C++ 算法进阶】算法提升十五
开发语言·c++·算法