hot100滑动窗口
2026/5/5 14:35:31 网站建设 项目流程

303. 区域和检索 - 数组不可变(前缀和模板)

暴力解

没有前缀和数组帮忙,这个my_nums只是用来存用户传来的数组的

前缀和 代码

有一个前缀和数组,这样构造的时候只麻烦一次,查询的时候就很简单了。
前缀和数组v【i】,表示的是前i个数的前缀和,所以我们必须写v【0】=0,这样统一后,代码会好写很多。

560. 和为 K 的子数组

暴力解法

索引 i 和 j 确定一个子数组,枚举出所有子数组,子数组求和等于 k 的话则 count++。

  1. 首先并不能用滑动窗口()
  2. 所以我们用前缀和的方法

第二个循环中的逻辑(有点绕,但是很简单)

使用前缀和时,

  1. 前缀和数组必须s[0]=0(前0个数的和是0,无可厚非吧)
  2. 先查cnt表,再填cnt表,不能颠倒。

代码,2个循环

第一个循环用来填好前缀和表s
第二个循环查cnt表,填cnt表。取代前缀和用来查询,将n^2提升到n
查是find(sj-k)
填是cnt[sj]++ (因为取代的前缀和s,要把s的数据都填入表内)

一次遍历 代码

为了和后面的437. 路径总和 III代码统一,记这个一次遍历的代码会好些。

注意:

  1. cnt是用来记录前缀和的次数的。所以前缀和是0的时候,必然有一次

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询