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

数据预处理:前缀和算法详解

数据预处理:前缀和算法详解

文章目录

  • 数据预处理:前缀和算法详解
    • 1.算法原理
    • 2.算法作用
    • 3.C++代码实现
    • 4.实战题目

1.算法原理

基本概念

前缀和(Prefix Sum)是一种常用的数据预处理技术,它可以快速求解区间和问题,大大降低查询的时间复杂度。在处理一系列数据的区间查询时,前缀和能够提供高效的解决方案。
核心思想是:通过构建一个新数组,其中每个元素存储原数组前i个元素之和.

数学原理
在这里插入图片描述
构建过程
在这里插入图片描述


2.算法作用

核心功能

• 快速区间求和:可 O(1) 时间内计算任意区间 [l, r] 的和
• 降低时间复杂度:将区间求和的复杂度从 O(n) 优化到 O(1)

计算公式
在这里插入图片描述
适用场景

1. 频繁查询数组区间和
2. 二维前缀和(矩阵区域和)


3.C++代码实现

#include <iostream>
using namespace std;
const int N = 1e5+10;
int a[N], s[N];
int main() {int n, m;cin >> n >> m;// 输入数组(下标从1开始)for(int i = 1; i <= n; i ++) cin >> a[i];// 构建前缀和数组for(int i = 1; i <= n; i ++) s[i] = s[i-1] + a[i];// 处理查询while(m --) {int l, r;cin >> l >> r;cout << s[r] - s[l-1] << endl;}return 0;
}

注意事项


  1. 数组下标从1开始
  2. 前缀和数组初始化为 s[0] = 0
  3. 前缀和数组在数据范围超过int 时使用long long 数据类型

4.实战题目

前缀和算法会在如下题目中经常用到
求区间和
[蓝桥杯 2022 省 A] 求和

http://www.xdnf.cn/news/105427.html

相关文章:

  • 23种设计模式-结构型模式之享元模式(Java版本)
  • Apache Flink 深度解析:流处理引擎的核心原理与生产实践指南
  • 邮件被标记为垃圾邮件怎么办
  • 安全邮件系统的Maple实现详解
  • 如何选择 Flask 和 Spring Boot
  • Python爬虫实战:获取豆ban网最新电影数据,为51观影做参考
  • 网络原理 - 6
  • 线段树讲解(小进阶)
  • 第七章:Workspace Security
  • LangChain4j(13)——RAG使用3
  • 系统编程_进程间通信机制_消息队列与共享内存
  • 人工智能催化民航业变革:五大应用案例
  • redis client.ttl(key)
  • day001
  • 高等数学第一章---函数与极限(1.2 数列的极限2)
  • Cluely 使用指南:一款重新定义“作弊”的AI工具
  • URP-UGUI相关知识
  • 220V转直流非隔离传感器供电电源芯片WT5105
  • 国际化不生效
  • 【数字图像处理】机器视觉(1)
  • QT之Q_PROPERTY介绍以及在QWidget中的用法
  • 操作系统学习笔记
  • 2025年阅读论文的常用工具推荐
  • STM32F407 的通用定时器与串口配置深度解析
  • CSRF攻击原理与解决方法
  • 强化学习算法笔记【AMP】
  • 渗透测试中的信息收集:从入门到精通
  • 心智模式VS系统思考
  • 海外产能达产,威尔高一季度营收利润双双大增
  • 1.5软考系统架构设计师:架构师的角色与能力要求 - 超简记忆要点、知识体系全解、考点深度解析、真题训练附答案及解析