前缀和主要适用的场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和。

差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减。

class Difference:

def __init__(self, nums):

self.nums = nums

self.diff = self.make_diff(self.nums)

def make_diff(self, nums):

diff = [0 for _ in range(len(nums))]

diff[0] = nums[0]

for i in range(1,len(nums)):

diff[i] = nums[i] - nums[i-1]

return diff

# 给闭区间[i,j]增加val

# 原理很简单,回想diff数组反推nums数组的过程,diff[i] += 3意味着给nums[i..]所有的元素都加了 3,然后diff[j+1] -= 3又意味着对于nums[j+1..]所有元素再减 3,那综合起来,是不是就是对nums[i..j]中的所有元素都加 3 了?

def increment(self, i, j, val):

self.diff[i] += val

if j + 1 < len(self.diff):

self.diff[j + 1] -= val

def recover(self):

rdiff = [0 for _ in range(len(self.diff))]

rdiff[0] = self.diff[0]

for i in range(1,len(self.nums)):

rdiff[i] = rdiff[i-1] + self.diff[i]

return rdiff

difference = Difference([8,5,9,6,1])

print(difference.diff)

rdiff = difference.recover()

print(rdiff)

difference.increment(2,3,1)

print(difference.diff)

rdiff = difference.recover()

print(rdiff)

结果:

[8, -3, 4, -3, -5]

[8, 5, 9, 6, 1]

[8, -3, 5, -3, -6]

[8, 5, 10, 7, 1]

不妨去试试力扣第 1109 题「航班预订统计]。

labuladong的算法小抄

python刷题总结_【python刷题】差分数组相关推荐

  1. android系统刷机,最专业的的安卓系统刷机方法_安全刷机

    今天小编介绍的是最简单的利用第三方软件来进行刷机的方法.第三方软件有很多,比如刷机精灵.甜椒刷机助手.卓大师等等,下面以刷机精灵为例来讲解. 1.下载安装刷机精灵,打开,用数据线将手机与电脑的USB接 ...

  2. python搜题题库_免费搜题公众号python

    免费搜题公众号python 更多相关问题 泥里出生,加工成块,又白又嫩,街上有卖. (打一食物) 大绿球儿圆又圆,不踢不拍不投篮,买回家中用刀切,啃上一口格外甜. (打一水果) 生来无形,走动便有声, ...

  3. html搜题软件,大学搜题app哪个好_大学好的搜题软件_大学搜题免费

    核心提示:大学搜题的软件有很多,哪些大学搜题软件是我们想要的呢,下面多特小编就跟您推荐几款比较合适的软件或者app给您参考 大学搜题的软件有很多,哪些大学搜题软件是我们想要的呢,下面多特小编就跟您推荐 ...

  4. python多进程编程实例_[python] Python多进程编程技术实例分析

    这篇文章主要介绍了Python多进程编程技术,包括了线程.队列.同步等概念及相关的技巧总结,需要的朋友可以参考下 本文以实例形式分析了Python多进程编程技术,有助于进一步Python程序设计技巧. ...

  5. python查看excel编码格式_[Python]实现处理读写xlsx xls excel文件格式(含中文处理方法)...

    最近有个需求要处理excel 格式的数据,数据量比较大.用传统的语言似乎不太好处理,于是改用python实现,这里记录一下实现过程. 首先,科普一下xlsx xls的excel文件区别是什么. xls ...

  6. python快速爬虫视频_“python怎么快速爬虫视频“python 爬网页视频教程

    用python怎样爬网页 # coding:utf8 import cookielib import urllib2 url = "http://blog.uouo123.com" ...

  7. python朋友圈刷屏_“Python太火了!请救救Java!”9万程序员刷屏朋友圈 !

    没想到有生之年,笔者能观察到"霸主陨落"的过程,继PLPY4月榜单官宣,Python躺赢,再度"夺"冠,实力甩下Java和C后,近期,Stack Overflo ...

  8. python 打包 小文件_[Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件

    1.安装 pyinstaller 插件 cmd命令:pip install PyInstaller PS . o.o 不知道 easy_install 的百度吧. 2.pyinstaller 简介 他 ...

  9. 英特奇android刷机,英特奇E88线刷刷机教程_英特奇E88线刷rom包_系统刷机包

    有关英特奇intki E88的刷机资料来分享一下了,说到刷机资料其实包括的挺多的,一般包括刷机包和root包以及相关的刷机教程了,今天在这里说的刷机包是线刷包了,一般线刷包是比较重要的一个资料,因为线 ...

  10. 一加3t刷机后还卡_一加OnePlus 3T官方固件刷机教程_线刷|救砖教程图解

    三:一加OnePlus 3T使用工具线刷教程详解 1.安装驱动(有两个驱动都是需要安装的,驱动在线刷包里,下载即可看到) ①安装驱动1,如下图所示: ②安装驱动2,如下图所示: 2.打开工具,如下图所 ...

最新文章

  1. 大规模环境下基于语义直方图的多机器人实时全局定位图匹配
  2. 《kafka中文手册》- 构架设计(一)
  3. 科大星云诗社动态20210407
  4. 关于Java栈与堆的思考
  5. 问题: springboot返回登录失败
  6. Oracle用户、权限、角色管理
  7. DataReader不奇怪,该出手时就出手!
  8. 有问有答 | 容器精华问答,如何玩转容器服务?
  9. python怎么发音乐到朋友圈_只要三步,用Python轻松制作短视频,你也能在朋友圈傲娇一把!...
  10. python合并表格用什么库_python合并多个excel表格数据库-python实现excel合并
  11. Linux安装nat123步骤
  12. 医院医疗类报表免费用,提反馈,还能赢取P30!
  13. 37-基于51单片机智能温控风扇设计
  14. python猜数游戏续_python实现猜数游戏
  15. 老梁说天下——慈善的红与黑
  16. 自动驾驶汽车是如何利用高精度地图和高精度定位来导航
  17. 因果关系发现:推开认知世界的大门
  18. 2023移动光猫H2-2超级密码获取教程(可改桥接)
  19. QT读写Sqlite数据库的三种方式
  20. 输入一个整数,判断它能否被3、5、7整除,并输出以下信息之一:

热门文章

  1. 你以为的论文答辩,实际的论文答辩,看着看着就哭系列
  2. VHDL设计出租车计价器
  3. Linux的gcc可以看汇编,linux gcc 内嵌汇编
  4. odciexttableopen 调用出错 error open log_如何在 Spring 异步调用中传递上下文
  5. 看《长安十二时辰》可以了解哪些算法知识
  6. Android开发的小技巧总结
  7. 【20190226】JavaScript-知识点记录:dom0级事件,dom2级事件
  8. 《javascript 高级程序设计》 笔记1 1~7章
  9. rabbit MQ 的环境及命令使用(一)
  10. 微信小程序开发03-这是一个组件