我们可以通过这个图看到我们的前缀和和这个差分实际上是一个互逆的过程。

我们假如想给所有的A数组中元素都加C。需要O(n)的时间复杂度。

但是如果我们把A数组中想加C的区间l,r在B数组的同样区间中加C,r 然后在r+1后面的区间每个B元素都-C。这样因为A是B的前缀和。所以也能完成同样的事情。但是这里的B只是给bl+C和b(r+1)-C。只是加了一个数和减去一个数,时间复杂度为O(1)。

所以我们差分的作用就显现出来了。

我们来看一下例题:

我们看看我们的java代码怎么去写这个题:

对了之前的差分还要补充一点,原数组a1......an可以看成是由一个长度为n,元素均为0的数组进行差分,每次加上对应元素形成的数组。

运行结果:

同样的:

如果我们想给一个数组a的一个区间内的每个元素都加上c也可以用之前的那种思想。

然后我们再来看一个题:差分矩阵

我们来看一下java代码怎么去写这个题:

运算结果:

(ACWing yxc算法基础课笔记)差分相关推荐

  1. (ACWing yxc算法基础课)习题课1.1

    第一题: 我们先来回忆一下我们快速排序的三个步骤: 我们快速排序是要递归左边和右边的,但是我们这里是快选是不需要左边和右边都递归的 ,分成两种情况,假设我们的k是小于左边元素个数的,那么我们第k小的数 ...

  2. 算法与数据结构模版(AcWing算法基础课笔记,持续更新中)

    AcWing算法基础课笔记 文章目录 AcWing算法基础课笔记 第一章 基础算法 1. 排序 快速排序: 归并排序: 2. 二分 整数二分 浮点数二分 3. 高精度 高精度加法 高精度减法 高精度乘 ...

  3. Acwing《算法基础课》第3章 搜索与图论

    Acwing<算法基础课>第3章 搜索与图论 文章目录 Acwing<算法基础课>第3章 搜索与图论 深度优先遍历DFS 宽度优先搜索BFS 拓扑排序 dijkstra算法 朴 ...

  4. 背包四讲 (AcWing算法基础课笔记整理)

    背包四讲 背包问题(Knapsack problem)是一种组合优化的NP完全问题.问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高 ...

  5. Acwing - 算法基础课 - 笔记(数学知识 · 二)

    文章目录 数学知识(二) 欧拉函数 公式法 筛法 欧拉定理 快速幂 扩展欧几里得算法 中国剩余定理 数学知识(二) 这一小节主要讲解的内容是:欧拉函数,快速幂,扩展欧几里得算法,中国剩余定理. 这一节 ...

  6. Acwing - 算法基础课 - 笔记(图论 · 三)

    文章目录 搜索与图论(三) 最小生成树 Prim算法 Kruskal算法 总结 二分图 染色法 匈牙利算法 小结 搜索与图论(三) 这一节讲解的是最小生成树和二分图 最小生成树 什么是最小生成树?首先 ...

  7. Acwing - 算法基础课 - 笔记(数学知识 · 一)

    文章目录 数学知识(一) 质数 质数的判定 分解质因数 朴素思路 优化 筛选质数 朴素筛法 埃氏筛法 线性筛法 小结 约数 求一个数的所有约数 求约数个数 求约数之和 求最大公约数 数学知识章节,主要 ...

  8. ACwing算法基础课全程笔记(2021年8月12日开始重写+优化)

    更好的阅读体验 ※基础模板 2021年8月12日开始对基础课笔记进行重写+优化 请大家支持AcWing正版,购买网课能让自己获得更好的学习体验哦~ 链接:https://www.acwing.com/ ...

  9. AcWing算法基础课第一讲(2):高精度加减乘除、前缀和、差分

    文章目录 1. 高精度加法 2. 高精度减法 3. 高精度乘低精度 4. 高精度除以低精度 5. 一维前缀和 6. 二维前缀和 7. 一维差分 8. 二维差分 1. 高精度加法 这里讲解两个大整数的加 ...

最新文章

  1. Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)
  2. Caffe编译代码的时候报各种未定义未声明
  3. oracle分页的三种方式,oracle 使用rownum的三种分页方式
  4. php 获得焦点,jquery中blur()失去焦点与focus() 获取焦点事件
  5. Atitit mybatis 翻页解决法 目录 1.1. 翻页模式还有js翻页前端翻页更加简单 1 1.2. 逻辑分页使用类RowBounds vs 物理分页 offset模式 1 1.3.
  6. C语言数据类型大小分析(基于VC2005编译器)
  7. 《编译原理及实践教程》第一章学习笔记
  8. uc极度精简版_UC浏览器安卓版-UC浏览器(UCBrowser)12.0.4.987 去广告精简版-东坡下载...
  9. 什么是443端口?HTTPS是什么端口?如何工作
  10. 数据库报duplicate XXX entry for key primary错误的可能原因以及解决方法
  11. python写贪吃蛇游戏
  12. Violent python - UNIX Password CrackerZipfile Password Cracker
  13. 2018校园招聘笔经面经合集:算法,机器学习,大数据方向
  14. 美国软件开发实习生月薪排行榜
  15. python遇到天猫反爬虫_selenium 淘宝登入反爬虫解决方案(亲测有效)
  16. 安装 en_core_web_sm-3.0.0
  17. 算法学习之算法的引入
  18. 史上最全C语言学习笔记
  19. 我的Java培训经历
  20. CMD命令工具--Windows下使用tree命令生成目录

热门文章

  1. .Net Core 登陆验证
  2. Celery实现短信注册接口
  3. 小米手机扩容教程_小米4 16g升级64g教程:小米4 16g扩张64g步骤
  4. BZOJ_1778_[Usaco2010_Hol]_Dotp_驱逐猪猡_(期望动态规划+高斯消元+矩阵)
  5. python字符串str_python3 字符串str 教程
  6. 集成VueCli5各种功能与插件(一)安装
  7. No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'
  8. 如何将视频中的音频提取出来
  9. java语言就业方向_Java就业方向有哪些?
  10. windows下vscode + code runner + cmake + msbuild.exe搭建C++快速编译环境