算法第四期——前缀和(Python)

本文详细介绍了前缀和的概念及其在一维和二维数组中的应用,包括如何快速计算区间和。此外,文章还讨论了差分数组如何提升修改效率,并通过例题展示了如何运用前缀和解决实际问题,如灵能传输和统计子矩阵问题。通过不同的解题方法,如暴力法、二维前缀和及尺取法,深入探讨了算法的优化策略。
摘要由CSDN通过智能技术生成

目录

前缀和 

前缀和与差分 

差分数组:提升修改的效率

例题:灵能传输

解法一

解法二

例题:统计子矩阵

处理输入

方法1: 纯暴力(通过30%)

方法2:二维前缀和(通过70%)

(1)预计算前缀和

(2)计算子矩阵和 

 方法3:二维前缀和+尺取法(通过100%)


前缀和 

一维前缀和 

  • 数组a[0]~a[n-1],前缀和s[i]等于a[0] ~ a[i]的和:

      s[0] = a[0]=0(a[0]一般不用,初始化为0,处理数据从s[1]开始

      s[1] = a[0] + a[1]

      s[2] = a[0] + a[1] +a[2]

      ………………

a = [0,  1,2, 3, 4,  5, .....]
s = [0,  1,3,16, 10,15,......]

  • 前缀和递推:  sum[i] = sum[i-1] + a[i]
n = 10
a = [0] + [i for i in range(1,n+1)]  # 初始化1~10,不用a[0]
print(a) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sum = [0] * n
for i in range(1, n):                # 求前缀和
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小叶pyか

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值