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

黄浦西安网站建设织梦免费网站模块

黄浦西安网站建设,织梦免费网站模块,wordpress国外主题网站模板,西安seo包年服务前缀和(Prefix Sum)算法介绍 前缀和是一种预处理技术, 用于快速计算数组中任意子区间的元素之和. 它通过一次遍历创建一个辅助数组来存储从数组起始位置到当前索引位置所有元素的累加和, 从而使得后续查询操作的时间复杂度降低至 O ( 1 ) O(1) O(1). 定义 对于给定的数组 n…

前缀和(Prefix Sum)算法介绍

前缀和是一种预处理技术, 用于快速计算数组中任意子区间的元素之和. 它通过一次遍历创建一个辅助数组来存储从数组起始位置到当前索引位置所有元素的累加和, 从而使得后续查询操作的时间复杂度降低至 O ( 1 ) O(1) O(1).

定义

对于给定的数组 nums, 它的前缀和数组 prefixSum 是一个新的数组, 其中 prefixSum[i] 表示原数组 nums 中从 nums[0]nums[i] 的所有元素的和. 特别地, prefixSum[0] = nums[0].

Prefix Sum

计算过程

  • 初始化prefixSum[0] = arr[0].
  • 对于每个i > 0, 设置prefixSum[i] = prefixSum[i-1] + arr[i].

计算前缀和数组通常通过一次遍历原数组来完成. 以 C++ 代码为例, 实现如下:

std::vector<int> num{1, 2, 3, 4, 5};
std::vector<int> prefix_sum(num.size());prefix_sum[0] = num[0];
for (int i = 1; i < num.size(); ++i) {prefix_sum[i] = prefix_sum[i - 1] + num[i];
}fmt::println("num       : {}", num);
fmt::println("prefix sum: {}", prefix_sum);

输出:

num       : [1, 2, 3, 4, 5]
prefix sum: [1, 3, 6, 10, 15]

或者使用 C++标准库的std::partial_sum函数:

std::vector<int> num{1, 2, 3, 4, 5};
std::vector<int> prefix_sum(num.size());std::partial_sum(num.begin(), num.end(), prefix_sum.begin());fmt::println("num       : {}", num);
fmt::println("prefix sum: {}", prefix_sum);

代码输出同上.

应用场景

快速计算子数组的和: 一旦得到了前缀和数组, 就可以在 O(1) 的时间复杂度内计算出原数组中任意子数组 [left, right] 的和.
子数组 [left, right] 的和为 prefixSum[right] - (prefixSum[left - 1] if left > 0 else 0).

例如, 对于上述 num 数组, 如果要计算子数组 [2, 4] 的和, 即 prefixSum[4] - prefixSum[1] = (1 + 2 + 3 + 4 + 5) - (1 + 2) = 15 - 3 = 12.

prefix sum subarray

优化某些算法: 在一些算法中, 通过使用前缀和可以将原本时间复杂度较高的算法优化为更高效的算法. 例如, 在计算数组中所有子数组的和时, 使用前缀和可以避免重复计算, 从而降低时间复杂度.

例题

LeetCode 560. 和为 K 的子数组

给定一个整数数组 nums 和一个整数 k, 返回数组中和为 k 的子数组的个数.

样例:

  1. nums = [1, 1, 1], k = 2: 结果为 2, 因为 [1, 1][1, 1] 是两组和为 2 的子数组.

  2. nums = [1, 2, 3], k = 3: 结果为 2, 因为 [1, 2][3] 是两组和为 3 的子数组.

  3. nums = [1, -1, 1, 2, 3, -2, -1], k = 3: 结果为 7, 情况如图所示:
    LeetCode 560 Sample

    从例三中, 我们可以看到对于一个 Index i, 以它结尾的子数组可能不止一个.

思路<
http://www.dtcms.com/wzjs/548758.html

相关文章:

  • 网站建设视屏教程农业网站设计
  • 网站建设价值wordpress 插件反复安装
  • 做网站论坛wordpress变色龙主题
  • 自助建站软件自动建站系统网站备案要幕布照
  • 单人网站制作php网站开发实例编程
  • 网站建设 协议书钦州市网站建设
  • 浙江省建设培训中心网站大连网站开发价格
  • lol做任务领头像网站网站推广计划包括哪些
  • 重庆做网站团队简单的网页设计主题
  • vs做网站开发吗深圳企业网站建设设计制作方案
  • 上海网站建设网页设池州网站建设开发
  • 网站排名优化首页wordpress 网站地址
  • 江门网站建设公司哪家好wordpress 主题 知乎
  • 电脑上做免费网站教程制作网站小程序
  • 株洲企业网站建设品牌哪些网站才能具备完整的八项网络营销功能
  • 宁波企业建网站报价中国网库做网站
  • 台州自助建站在线咨询wordpress安全设置
  • php商务网站开发在网上做广告怎么做
  • 东营住房和城乡建设厅网站网页微信不能登录是怎么回事
  • 前期做网站宣传费用怎样做账wordpress后台地址能改
  • 代账行业门户网站开发张家港建网站
  • 网站建设方案可行性做彩铃的网站
  • 求职招聘网站开发代码网站营销外包哪家专业
  • 色卡网站源码下载网站推荐
  • 关于网站建设的专家研讨会阿里云 wordpress主机名
  • 网站网站建设设计公司酱香拿铁采取了哪些网络营销方式
  • 怎么做类似淘宝的网站商城开发价格服务
  • 巴南网站制作移动端h5是什么
  • 公司做网站需要准备什么软件塔里木油田公司档案馆网站建设研究
  • 旅行社营业网点可以做网站吗wordpress安装和使用