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

优选算法第四讲:前缀和模块

优选算法第四讲:前缀和模块

  • 1.[模板]前缀和
  • 2.【模板】二维前缀和
  • 3.寻找数组的中心下标
  • 4.除自身以外数组的乘积
  • 5.和为k的子数组
  • 6.和可被k整除的子数组
  • 7.连续数组
  • 8.矩阵区域和

1.[模板]前缀和

链接: link
在这里插入图片描述

#include <iostream>
#include <vector>
using namespace std;int main() {int n = 0, q = 0;cin >> n >> q;vector<int> arr(n+1);//开辟一个n+1的数组for(int i = 1; i <= n; i++) cin >> arr[i];//创建一个前缀和数组。vector的构造会自己初始化vector<long long> dp(n+1);//更新前缀和数组for(int i = 1; i<=n; i++) dp[i] = dp[i-1] + arr[i];//直接使用前缀和数组进行返回即可int l = 0, r = 0;while(q--){cin >> l >> r;cout << dp[r] - dp[l-1] << endl;//直接输出结果即可}return 0;
}

2.【模板】二维前缀和

链接: link
在这里插入图片描述

3.寻找数组的中心下标

链接: link
在这里插入图片描述

class Solution {
public:int pivotIndex(vector<int>& nums) {int n = nums.size();vector<int> f(n), g(n);//1.分别求出前缀和、后缀和数组for(int i = 1; i<n; i++)f[i] = f[i-1] + nums[i-1];for(int i = n-2; i>=0; i--)g[i] = g[i+1] + nums[i+1];//2.使用前缀和、后缀和数组for(int i = 0; i<n; i++)if(f[i] == g[i]) return i;return -1;}
};

4.除自身以外数组的乘积

链接: link
在这里插入图片描述

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n = nums.size();vector<int> f(n), g(n);//1.先求出f和g数组f[0] = 1;//注意:细节问题一定要处理g[n-1] = 1;for(int i = 1; i<n; i++)f[i] = f[i-1] * nums[i-1];for(int i = n-2; i>=0; i--)g[i] = g[i+1] * nums[i+1];//2.使用两数组vector<int> ret(n);for(int i = 0; i<n; i++)ret[i] = f[i] * g[i];return ret;}
};

5.和为k的子数组

链接: link
在这里插入图片描述

class Solution {
public:int subarraySum(vector<int>& nums, int k) {unordered_map<int, int> hash;hash[0] = 1;int sum = 0, ret = 0;for(auto e : nums){sum += e;//计算当前位置的前缀和if(hash.count(sum - k)) ret += hash[sum-k];hash[sum]++;}return ret;}
};

6.和可被k整除的子数组

链接: link
在这里插入图片描述

class Solution {
public:int subarraysDivByK(vector<int>& nums, int k) {unordered_map<int, int> hash;hash[0] = 1;//细节问题:如果nums的和可被k整除,那么也要将次数+1int sum = 0, ret = 0;for(auto e : nums){sum += e;int r = (sum%k + k) % k;//求余数的方法if(hash.count(r)) ret += hash[r];//如果sum%k = 前缀和%k,那么就可以被k整除hash[r]++;}return ret;}
};

7.连续数组

链接: link
在这里插入图片描述

class Solution {
public:int findMaxLength(vector<int>& nums) {unordered_map<int, int> hash;hash[0] = -1;int sum = 0, ret = 0;for(int i = 0; i<nums.size(); i++){sum += nums[i] == 0 ? -1 : 1;//我们不需要将数组的0改为1,只需要在加的这个部分加-1就行了if(hash.count(sum)) ret = max(ret, i-hash[sum]);else hash[sum] = i;//此时存储的应该是下标}return ret;}
};

8.矩阵区域和

链接: link
在这里插入图片描述

class Solution {
public:vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int k) {int m = 0, n = 0;m = mat.size();n = mat[0].size();//先计算出前缀和数组vector<vector<int>> dp(m+1, vector<int>(n+1));for(int i = 1; i<=m; i++)for(int j = 1; j<=n; j++)dp[i][j] = dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+mat[i-1][j-1];//前缀和数组的使用vector<vector<int>> ret(m, vector<int>(n));for(int i = 0; i<m; i++){for(int j = 0; j<n; j++){int x1 = 0, y1 = 0, x2 = 0, y2 = 0;x1 = max(0, i-k) + 1;y1 = max(0, j-k) + 1;x2 = min(m-1, i+k) + 1;y2 = min(n-1, j+k) + 1;ret[i][j] = dp[x2][y2] - dp[x1-1][y2] - dp[x2][y1-1] + dp[x1-1][y1-1];}}return ret;}
};

相关文章:

优选算法第四讲:前缀和模块

优选算法第四讲&#xff1a;前缀和模块 1.[模板]前缀和2.【模板】二维前缀和3.寻找数组的中心下标4.除自身以外数组的乘积5.和为k的子数组6.和可被k整除的子数组7.连续数组8.矩阵区域和 1.[模板]前缀和 链接: link #include <iostream> #include <vector> using…...

ubuntu20.04 加固方案-设置限制su命令用户组

一、编辑/etc/pam.d/su配置文件 打开终端。 使用文本编辑器&#xff08;如vim&#xff09;编辑/etc/pam.d/su文件。 vim /etc/pam.d/su 二、添加配置参数 在打开的配置文件的中&#xff0c;添加以下参数&#xff1a; auth required pam_wheel.so 创建 wheel 组 并添加用户 …...

TDengine数据备份与恢复

TDengine数据备份与恢复 一、数据备份和恢复介绍二、基于 taosdump 进行数据备份恢复三、基于 taosExplorer 进行数据备份恢复3.1 taosExplorer 的安装与配置3.2 使用taosExplorer 进行数据备份 一、数据备份和恢复介绍 官网地址&#xff1a;TDengine - 数据备份和恢复 为了防止…...

2024最新的开源博客系统:vue3.x+SpringBoot 3.x 前后端分离

本文转载自&#xff1a;https://fangcaicoding.cn/article/54 大家好&#xff01;我是方才&#xff0c;目前是8人后端研发团队的负责人&#xff0c;拥有6年后端经验&3年团队管理经验&#xff0c;截止目前面试过近200位候选人&#xff0c;主导过单表上10亿、累计上100亿数据…...

研究中的“异质性”、“异质性结果”是指?

“异质性”这个词在统计学和研究中指的是数据、现象或群体之间的差异&#xff0c;即不同个体、组别、区域或时间点的表现或特征并不相同。相对的概念是“同质性”&#xff0c;即所有个体或组别在某一方面表现相同或接近。 异质性&#xff08;Heterogeneity&#xff09;的含义 …...

Springboot整合AOP和redis

aop pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 开启自动代理 注意&#xff1a;在完成了引入AOP依赖包后&#xff0c;一般来说并不需要去做其他…...

freetype学习总结

freetype学习总结 目录 freetype学习总结1. LCD显示字符问题引入2. freetype概念2.1 嵌入式设备使用FreeType的方法步骤2.2 嵌入式设备使用FreeType的注意事项 3. freetype官方C示例3.1 example1.c源码 4. 嵌入式设备上使用FreeType的简单示例4.1 简单示例代码4.2 代码分析 5. …...

上海亚商投顾:沪指缩量调整 华为概念股午后爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天震荡调整&#xff0c;沪指、深成指午后跌超1%&#xff0c;创业板指一度跌逾2%&#xff0c;尾盘跌幅有…...

操作系统与进程【单身狗定制版】

大家好呀 我是浪前 今天给大家讲解的是操作系统与进程 祝愿所有点赞关注的人&#xff0c;身体健康&#xff0c;一夜暴富&#xff0c;升职加薪迎娶白富美!!! 点我领取迎娶白富美大礼包 前言&#xff1a; 我们今天我们来学习操作系统 当然啦&#xff0c;操作系统是一个很庞大的…...

监听el-table中 自定义封装的某个组件的值发现改变调用函数

监听el-table中 自定义封装的某个组件的值发现改变调用函数 当你在一个 el-table 中使用封装的自定义组件作为单元格内容时&#xff0c;监听这个组件的值变化并调用函数&#xff0c;可以通过以下步骤实现&#xff1a; 创建自定义组件&#xff1a;首先创建一个自定义的 Vue 组…...

frida安装

开始安装 frida https://github.com/frida/frida/releases 下载安装的时候查看自己手机是多少位的 adb shell getprop ro.product.cpu.abi # 按照自己的机型下载进行解压里面有个文件放入到手机中开始进入手机 然后按照下面的图执行命令 其中log 我只是看了下 不需要执行因为刚…...

链表详解(三)

目录 链表功能实现链表的查找SLNode* SLFind(SLNode* phead, SLNDataType x)代码 链表任意位置前插入void SLInsert(SLNode**pphead&#xff0c;SLNode* pos, SLNDataType x)代码 链表任意位置前删除void SLErase(SLNode**pphead&#xff0c;SLNode* pos)代码 链表任意位置后插…...

【RESP问题】RESP.app GUI for Redis 连接不上redis服务器

问题描述&#xff1a; 在使用RESP的时候出现地址和密码正确但是连接不上Redis服务器的情况&#xff0c;但是由于在之前我是修改过Redis的配置文件的&#xff0c;所以现在怀疑是防火墙的问题。 问题解决&#xff1a; 在[rootlocalhost ~]下输入以下命令打开防火墙 #放通6379/…...

【github 有趣项目】AMULE

官方网站github ‘All-platform’ P2P client based on eMule电骡社区文档 下载&安装 去官方网站下载&#xff08;社区版一般版本较新&#xff09;&#xff0c;解压版解压打开即可。 点击“下一页”&#xff0c;输入名称&#xff0c;后边全都下一步即可 通过upnp设置端…...

【WRF数据准备】土地利用类型分类标准:USGS+MODIS IGBP 21

【WRF数据准备】土地利用类型分类标准&#xff1a;USGSMODIS IGBP 21 WRF常用土地类型分类MODIS IGBP 21USGSNLCD Landuse 选择土地利用分类标准替换城市土地类型后更改土地利用分类参考 WRF常用土地类型分类 WRF中土地利用类型最高分辨率是30s&#xff0c;且主要分为MODIS和U…...

KVM虚拟机迁移:无缝迁徙,重塑云上未来

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#…...

CSS常见适配布局方式

在网页设计中&#xff0c;布局是确保内容按预期显示的关键部分。CSS 提供了多种布局方式&#xff0c;每种方式都有其特定的用途和优势。以下是您提到的五种布局方式的详细解释&#xff1a; 1. 流式布局&#xff08;百分比布局&#xff09; 概述&#xff1a; 流式布局&#xf…...

ArkUI常用布局:构建响应式和高效的用户界面

在HarmonyOS应用开发中&#xff0c;ArkUI作为用户界面开发框架&#xff0c;提供了多种布局方式来帮助开发者构建响应式和高效的用户界面。本文将详细介绍ArkUI中的常用布局方式&#xff0c;包括线性布局、层叠布局、弹性布局、相对布局、栅格布局、列表和轮播布局&#xff0c;并…...

论面向服务架构设计及其应用

一、引言 企业应用集成&#xff08;Enterprise Application Integration&#xff0c;EAI&#xff09;是企业实现信息系统协同工作的关键途径&#xff0c;尤其是在当前多系统、多平台并存的企业环境下&#xff0c;集成需求愈发显著。面向服务架构&#xff08;Service-Oriented …...

HTML5 + CSS3 + JavaScript 编程语言学习教程

HTML5 CSS3 JavaScript 编程语言学习教程 欢迎来到这篇关于 HTML5、CSS3 和 JavaScript 的详细学习教程&#xff01;无论你是初学者还是有一定基础的开发者&#xff0c;这篇文章都将帮助你深入理解这三种技术的核心概念、语法和应用。 目录 HTML5 1.1 HTML5 简介1.2 HTML5 …...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用

阻止除自定义标签之外的所有标签 先输入一些标签测试&#xff0c;说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时&#xff08;如通过点击或键盘导航&…...