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

自己创建网站的注意事项手机网站模板

自己创建网站的注意事项,手机网站模板,海口专业做网站,石家庄网站建设找哪家问题描述: 差分数组 1. 什么是差分数组? 差分数组 c 是原数组 a 的“差值表示”,其定义如下: c[0] a[0]c[i] a[i] - a[i-1] (i ≥ 1) 差分数组记录了相邻元素的差值。例如,原数组 a [1, …

问题描述:

在这里插入图片描述

差分数组

1. 什么是差分数组?

差分数组 c 是原数组 a 的“差值表示”,其定义如下:

  • c[0] = a[0]
  • c[i] = a[i] - a[i-1]i ≥ 1

差分数组记录了相邻元素的差值。例如,原数组 a = [1, 3, 5, 2] 对应的差分数组为 c = [1, 2, 2, -3]

2. 差分数组的优势

通过差分数组,可以将区间操作转换为两次单点操作:

  • 若要将区间 [l, r] 的所有元素增加 k,只需执行:
    • c[l] += k
    • c[r+1] -= k
      这一操作的时间复杂度为 O(1),彻底避免了遍历区间。

3. 还原原数组

对差分数组进行前缀和运算即可还原原数组:

  • a[i] = c[0] + c[1] + ... + c[i]
    前缀和的本质是逐步累加差分值,恢复出原数组的实际数值。

解题思路详解

步骤1:构建差分数组

  1. 初始化差分数组 c,长度为 n+1(多一位用于处理右边界)。
  2. 根据原数组 a 的相邻差值填充 c,确保 c[i] = a[i] - a[i-1]

步骤2:处理区间操作

对于每个操作 [l, r, k]

  • c[l] += k,表示从 l 开始的所有元素增加 k
  • c[r+1] -= k,表示在 r+1 处抵消多余的 k,保证操作仅作用于 [l, r]

步骤3:还原修改后的数组

通过前缀和还原最终的数组:

  • c[1] 开始,依次累加 c[i] += c[i-1],最终 c[0...n-1] 即为修改后的原数组。

代码:

public static void main(String[] args) {//通过原数组计算 差分 数组//再通过计算出的 差分 数组做 数据操作,例如(要将[l,r]区间所有数组+1)就将c[l]+1 c[r+1]-1//对差分数组,做前缀和操作得到原数组//有一个坑,虽然数据都是在int范围内,但是会涉及到相加操作,可能会超出int范围,所以我们的差分数组应该设置为longScanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[] a = new int[n];//在创建差分数组的时候长度要设置为a.length + 1这是很有必要的,防止数组越界 这个边界操作(c[r + 1] -= 1;)long[] c = new long[n + 1];a[0] = sc.nextInt();//初始化差分数组c[0] = a[0];for (int i = 1; i < n; i++) {a[i] = sc.nextInt();c[i] = a[i] - a[i - 1];}
//        System.out.println("原数组a:" + Arrays.toString(a));
//        System.out.println("差分数组c:" + Arrays.toString(c));//要将[l,r]区间所有数组+cfor (int i = 0; i < m; i++) {int l = sc.nextInt();int r = sc.nextInt();int sum = sc.nextInt();c[l - 1] += sum;c[r] -= sum;}for (int i = 1; i < n; i++) {//这里复原的原理其实很简单// 例如对 1 2 3 4 5的[2,4]区间做+1操作,// 由于差分数组记录的是第i个数比第i-1个数大多少,之前i比i-1大1,+1操作之后,就是i比i-1大2了,// 但是由于我们要求在到[l,r]区间,所以r之后的差分就得还原 所以再做一个-1操作还原// 所以还原的时候,就能得到题目要求的数组了c[i] += c[i - 1];}for (int i = 0; i < n; i++) {if (c[i] < 0) {System.out.print(0 + " ");} elseSystem.out.print(c[i] + " ");}}
http://www.dtcms.com/wzjs/372112.html

相关文章:

  • 做网站公司牛鼻子seo专业课程
  • 在网络上做兼职的网站想开个网站怎样开
  • 找南昌网站开发公司微商引流被加方法精准客源
  • 深圳市网站制作最好的公司单页网站制作教程
  • 下列关于网站制作的seo排名关键词
  • 福建住房和城乡建设厅网站一体化平台个人接外包项目平台
  • 网站建设所需的硬软件持续优化疫情防控举措
  • 用户体验设计书籍贺贵江seo教程
  • 汉服销售网站建设简单网页设计模板html
  • 网站策划设计建设个人网站设计欣赏
  • zencart网站打不开深圳今日头条新闻
  • 什么网站可以自学ps做贵宾卡电子商务网站建设
  • 用dw怎么做登录页面的网站成都本地推广平台
  • 建站宝盒可以做视频聊天交友网站吗万能导航网
  • 建设银行对公网站打不开教育培训机构加盟十大排名
  • b2b网站开发设计各地疫情最新消息
  • 自媒体代运营怎么收费杭州百度快照优化排名推广
  • ps做的网站图片好大seo短视频网页入口引流免费
  • 网站建设与网页设计专业百度营销客户端
  • 那种转转假网站怎么做的网络推广平台有哪些?
  • 男人的天堂哔哩哔哩网站推广的优化
  • 阿里巴巴吧网站怎么做2345纯净版推广包
  • wordpress建立数据库网站seo快速优化技巧
  • 找人做网站怕侵权seo模拟点击软件源码
  • 哪个网站建设公司靠谱长沙官网seo技术
  • 网站开发的平台站长工具seo优化
  • 68Design一样设计网站学做网站需要学什么
  • 甘肃网站seo哪家公司好百度网址大全下载
  • 珠海动态网站制作外包软文街官网
  • 网站设计导航栏怎么做网络营销方法