【算法】: 前缀和算法(利用o(1)的时间复杂度快速求区间和)

前缀和算法:高效处理区间求和的利器

目录

  1. 引言
  2. 什么是前缀和
  3. 前缀和的基本实现
  4. 前缀和的作用
  5. 前缀和的典型应用场景
  6. 前缀和的优缺点分析
  7. 实战例题解析

引言

  • 区间求和问题的普遍性
  • 暴力解法的时间复杂度问题
  • 前缀和算法的核心思想

什么是前缀和

  • 前缀和的数学定义

通俗来讲,前缀和就是从某个位置到最开始的所有数据的和我们可以称作前缀和

  • 一维前缀和的概念

从当前位置到数组开始的所有数据的和。

  • 二维前缀和的概念

从当前位置到矩阵和开始((0,0))构成的局部矩阵的所有元素之和。

前缀和的基本实现

前缀和的基本实现非常简单,通过简单的遍历操作就能实现。

前缀和的作用

由于前缀和表示某个位置到数组或矩阵开头的和,因此前缀和数组可以快速帮助我们获取任意区间的和。

前缀和的典型应用场景

  1. 静态数组的频繁区间查询
  2. 矩阵中的子矩阵求和
  3. 结合哈希表解决特定问题
    • 和为K的子数组个数
    • 连续子数组和整除问题
  4. 数据处理与统计应用

前缀和的优缺点分析

优点

  • 查询时间复杂度O(1)
  • 实现简单高效
  • 扩展性强

缺点

  • 需要额外O(n)空间
  • 原始数组不可变(动态数组需用其他结构)
  • 高维时空间消耗大

实战例题解析

  1. 一维例题:LeetCode LCR 010. 题目链接
    在这里插入图片描述
    解法和思路
    本题通过hash进行记忆化存储前缀和,存储我们遍历时候当前位置之前的所有存在的前缀和,我们可以通过查找hash表判断是否存在我们需要的前缀和的值。

  2. 二维例题:LeetCode 304. 二维区域和检索 - 矩阵不可变
    在这里插入图片描述
    解法和思路:
    同一维思想相仿,只不过在构造的时候二维更加复杂:

  • 构建prefix(前缀和矩阵) : prefix[i][j] = prefix[i - 1][j] + prefix[i][j - 1] - prefix[i -1][j - 1] + matrix[i][j]
    在这里插入图片描述
  • 得到任意一个矩阵的和
    Sum({i,j} -> {s,t}) = prefix[s][t] - prefix[s][j - 1] - prefix[i - 1][t] + prefix[i - 1][j - 1]
  1. 拓展例题:统计美丽子数组数目(结合位运算前缀和)
    这道题可以自行思考:leetcode上面也有对应的题解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NDVI谐波拟合(基于GEE实现)

在遥感影像中,我们常用 NDVI(归一化植被指数)来衡量地表植被的绿度。它简单直观,是生态监测、农情分析的基础工具。但你是否注意到: NDVI 虽然“绿”,却常常“乱”。 因为云层、观测频率、天气干扰&#xf…

基于Python+YOLO模型的手势识别系统

本项目是一个基于Python、YOLO模型、PyQt5的实时手势识别系统,通过摄像头或导入图片、视频,能够实时识别并分类不同的手势动作。系统采用训练好的深度学习模型进行手势检测和识别,可应用于人机交互、智能控制等多种场景。 1、系统主要功能包…

黑马点评--短信登录实现

短信登录 导入黑马点评项目 导入资料中提供的SQL文件 其中的核心表有: tb_user :用户表 tb_user_info :用户详情表 tb_shop:用户信息表 tb_shop_type:商户类型表 tb_blog:用户日记表(达人…

AWS EC2实例安全远程访问最佳实践

EC2 远程连接方案对比 远程访问 Amazon EC2 实例主要有以下四种方式: Secure Shell (SSH) 远程访问AWS Systems Manager 会话管理器适用于 Linux 实例的 EC2 Serial ConsoleAmazon EC2 Instance Connect SSH 远程访问 SSH(Secure Shell)广…

Idea如果有参数,怎么debug

如上图,输入输出路径是需要运行的时候给参数。 那么 FileInputFormat.setInputPaths(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); 给上面的代码给参数的步骤为 1.在类名或者方法名上右键,选择More Run/Debug…

Oracle Apps R12——报表入门2:单表——报表开发流程

☆开发思路 开发表报代码流程中有几个重要的组件和重要的知识点需要搞懂,才能得心应手。报表通常是通过表格的形式来存在的,我们一般在开发代码的时候在【输出】中打印HTML,Css格式的表格,并把查询到的数据插入其中,即可完成一个报…

Servlet的继承关系和生命周期

1.继承关系: javax.servlet.Servlet接口->javax.servlet.GenericServlet抽象类 ->javax.servlet.http.HttpServlet抽象子类 2.相关方法: javax.servlet.Servlet: (1)void init(config) -初始化方法 &…

PEFT库PromptTuningConfig 配置

PEFT库 PromptTuningConfig 配置 "Prompt Tuning"的参数高效微调 PromptTuningConfig 核心参数解析 1. task_type="CAUSAL_LM" 作用:指定任务类型为因果语言模型(Causal LM)。说明:因果语言模型从左到右生成文本(如GPT系列),这与任务需求匹配(模…

【438. 找到字符串中所有字母异位词】

Leetcode算法练习 笔记记录 438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 思路就是我们要找和p相同的词,可以先排个序,每次取一个和p的size长度相同的窗口去滑动,符合就记录,不符合继续滑动。 public List&l…

React Hooks底层执行逻辑详解、自定义Hooks、FiberScheduler

React Hooks底层执行逻辑详解 React Hooks 在表面上看像普通的函数调用,背后却隐藏着一套复杂而高效的运行时机制。要理解 React Hooks 的底层执行逻辑,需要从 React 如何管理组件的状态与副作用入手。 🧠 一、React 为什么引入 Hooks&#…

Windows命令实用工具——tcping 命令工具安装及基础使用

Windows命令实用工具——tcping 命令工具安装及使用 一、tcping 命令简介二、tcping 的安装1、tcping 官网下载安装包2、将软件包复制到 Windws 系统的 System32 目录下面3、查看 tcping 命令是否安装成功 三、tcping 工具简单使用方法 一、tcping 命令简介 tcping 的主要功能…

智慧化工园区安全风险管控平台建设方案(Word)

1 项目概况 1.1 园区概况 1.1.1 XX化工园区简况 1.1.2 企业现状 1.1.3 园区发展方向 1.1.4 园区信息化现状 1.2 项目建设背景 1.2.1 政策背景 1.3 项目建设需求分析 1.3.1 政策需求分析 1.3.2 安全生产监管需求分析 1.3.3 应急协同管理需求分析 1.3.4 工业互联网安…

【动手学深度学习】2.3. 线性代数

目录 2.3. 线性代数1)标量2)向量3)矩阵4)张量5)张量的基本性质6)降维7)点积8)矩阵-向量积9)矩阵-矩阵乘法10)范数11) 小结 2.3. 线性代数 本节将…

如何在项目当中使用redis进行范围搜索

目录 如何将地理位置数据保存到 Redis 中以支持范围查询 Redis 中的 GEO 类型是什么? 如何保存 GEO 数据到 Redis 分段解释: RedisKey.POSTS_ANIMALS_LOCATIONS new Point(longitude, latitude) 如何进行范围搜索 Redis GEO 范围搜索核心语句 1…

物联网低功耗保活协同优化方案:软硬件与WiFi网关动态联动

目录 一、总体方案概述 二、架构组成 2.1 系统拓扑 2.2 硬件端(MCU + WiFi 模组) 2.3 WiFi 网关 2.4 云端服务器 三、低功耗保活技术设计模式 3.1 模式一:定时唤醒 + MQTT 保活 3.1.1 设备端 3.1.2 优势 3.2 模式二:网关保活代理 + 本地网络唤醒 3.2.1 网关功能…

UniApp+Vue3微信小程序二维码生成、转图片、截图保存整页

二维码生成工具使用uqrcode/js,版本4.0.7 官网地址:uQRCode 中文文档(不建议看可能会被误导) 本项目采用了npm引入方式,也可通过插件市场引入,使用上会略有不同 准备工作: 安装:pnpm…

Zenmap代理情况下无法扫描ip

原因是开了代理会报错 error “only ethernet devices can be used for raw scans on Windows” 在扫描参数后加 -sT -Pn,但会导致结果太多 例如:nmap -sT -T4 -A -v -Pn 10.44.2.0/24 如果你只是想找没人用的IP,你不需要搞复杂的原始层扫描&…

将多个值关联到同一个 key的map(key可以重复的map)示例

在 Java 中&#xff0c;标准的 Map 接口要求 key 必须唯一&#xff0c;如果需要 key 可重复 且保持 插入顺序 的数据结构&#xff0c;可以使用以下方案&#xff1a; 1. 使用 List<Map.Entry<K, V>> 最直接的方式是用链表存储键值对&#xff0c;允许重复 key&…

Arthas(阿尔萨斯)

一、Arthas 是什么&#xff1f; Arthas&#xff08;阿尔萨斯&#xff09;是阿里巴巴开源的一款 Java 在线诊断工具&#xff0c;基于 Java Agent 和字节码增强技术实现。它无需重启 JVM&#xff0c;即可动态追踪代码执行、实时查看 JVM 状态、修改代码逻辑&#xff0c;是生产环…

深入解读Qwen3技术报告(三):深入剖析Qwen3模型架构

重磅推荐专栏&#xff1a; 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域&#xff0c;包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用&#xff0c;以及与之相关的人工智能生成内容&#xff…