当前位置: 首页 > news >正文

797. 差分

Problem: 797. 差分

文章目录

  • 思路
  • 解题方法
  • 复杂度
  • Code

思路

这是一个差分数组的问题。差分数组的主要适用场景是频繁对原始数组的某一个区间进行增减操作。这种操作是区间修改操作,在这种操作下,差分数组只需要对区间的两个端点进行操作,时间复杂度为O(1)。
在这个问题中,我们需要对数组的某个区间进行加法操作,然后输出修改后的数组。我们可以使用差分数组来解决这个问题。

解题方法

1.首先,我们需要将原始数组转换为差分数组。差分数组的第i个数等于原始数组的第i个数和第i-1个数的差值。
2.然后,对于每一个操作,我们只需要将差分数组的左端点加上c,右端点后一个位置减去c。
3.最后,我们将差分数组转换回原始数组,即可得到结果。

复杂度

时间复杂度:

O ( n ) O(n) O(n),其中n是数组的长度。我们需要遍历一次数组来构建差分数组,然后遍历一次差分数组来得到结果。

空间复杂度:

O ( n ) O(n) O(n),我们需要额外的空间来存储差分数组。

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class Main {static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));static StreamTokenizer sr = new StreamTokenizer(in); static int MAXN = 100010;static int[] arr = new int[MAXN];static int[] dif = new int[MAXN];static int n, m;public static void main(String[] args) throws IOException {n = nextInt();m = nextInt();for(int i = 1; i <= n; i++) {arr[i] = nextInt();}while(m-- > 0) {int l = nextInt();int r = nextInt();int c = nextInt();dif[l] += c;dif[r + 1] -= c;}for(int i = 1; i <= n; i++) {dif[i] += dif[i - 1];out.print(arr[i] + dif[i]);out.print(" ");}out.flush();}static int nextInt() throws IOException {sr.nextToken();return (int) sr.nval;}}
http://www.lryc.cn/news/298934.html

相关文章:

  • 2024.2.5 vscode连不上虚拟机,始终waiting for server log
  • CSS基础---新手入门级详解
  • Python中Pymysql库的常见用法和代码示例
  • 使用 WPF + Chrome 内核实现高稳定性的在线客服系统复合应用程序
  • fastapi mysql 开发restful 3
  • 【Uniapp uni-app学习与快速上手——详细讲解】
  • 剑指offer——旋转数组的最小数字
  • 盘点数据可视化大屏焦点图十种样式
  • 问题 G: 老鼠和猫的交易
  • HiveSQL——借助聚合函数与case when行转列
  • 冒泡排序,判断回文,以及12-24小时制
  • 【Vue】computed与watch
  • 探索设计模式的魅力:捕捉变化的风-用观察者模式提升用户体验
  • SpringCloud-高级篇(十九)
  • Junit常用断言
  • docker 实现 mysql:8.3.0 主从复制(2024年2月13日最新版本)
  • STM32 + ESP8266,连接阿里云 上报/订阅数据
  • 如何利用chatgpt提升工作效率?
  • MongoDB聚合:$geoNear
  • Docker-CE 国内源国内镜像
  • 【Tauri】(3):使用Tauri1.5版本,进行桌面应用开发,在windows上搭建环境,安装node,rust环境,可以打包成功,使用vite创建应用
  • C++ 堆排序
  • U3D记录之FBX纹理丢失问题
  • 监测Nginx访问日志502情况后并做相应动作
  • 【数据分享】1929-2023年全球站点的逐年平均风速(Shp\Excel\免费获取)
  • Android性能调优 - 应用安全问题
  • C#的Char 结构的像IsLetterOrDigit(Char)等常见的方法
  • 部分意图分类【LLM+RAG】
  • 1277. 统计全为 1 的正方形子矩阵
  • Python 3 时间序列可视化指南