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;
        }
    }
相关推荐
咪咪渝粮9 分钟前
108. 将有序数组转换为二叉搜索树
算法·leetcode
lzptouch10 分钟前
蚁群(Ant Colony Optimization, ACO)算法
人工智能·算法·机器学习
苏纪云13 分钟前
算法<C++>——双指针操作链表
c++·算法·链表·双指针
闲云散13 分钟前
WebClient 简述
java·后端
louisdlee.15 分钟前
扫描线1:朴素扫描线
数据结构·c++·算法·扫描线
wudl556629 分钟前
JDK 21性能优化详解
java·开发语言·性能优化
CodeAmaz32 分钟前
ELK(Elasticsearch + Logstash + Kibana + Filebeat)采集方案
java·elk·elasticsearch·1024程序员节
864记忆39 分钟前
项目名称:烟酒进销存管理系统
java
纪莫42 分钟前
技术面:SpringBoot(启动流程、如何优雅停机)
java·spring·java面试⑧股
wan5555cn1 小时前
中国启用WPS格式进行国际交流:政策分析与影响评估
数据库·人工智能·笔记·深度学习·算法·wps