★ 算法OJ题 ★ 前缀和算法(上)

★ 算法OJ题 ★ 前缀和算法(上)

Ciallo~(∠・ω< )⌒☆ ~ 今天,将和大家一起做几道前缀和算法题 ~

❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️

澄岚主页:椎名澄嵐-ZEEKLOG博客

算法专栏:★ 优选算法100天 ★_椎名澄嵐的博客-ZEEKLOG博客

❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️

目录

壹  【模板】一维前缀和

1.1 题目

1.2 算法解析

1.3 撰写代码

贰  【模板】二维前缀和

2.1 题目

2.2 算法解析

2.3 撰写代码

叁  寻找数组的中心下标

3.1 题目

3.2 算法解析

3.3 撰写代码

肆  除自身以外数组的乘积

4.1 题目

4.2 算法解析

4.3 撰写代码


壹  【模板】一维前缀和

1.1 题目

【模板】前缀和_牛客题霸_牛客网

1.2 算法解析

1.3 撰写代码

#include <iostream> #include <vector> using namespace std; int main() { // 读取数据 int n, q; cin >> n >> q; vector<int> arr(n + 1); for (int i = 1; i <= n; i++) cin >> arr[i]; // 预处理前缀和数组 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.1 题目

【模板】二维前缀和_牛客题霸_牛客网

2.2 算法解析

2.3 撰写代码

#include <iostream> #include <vector> using namespace std; int main() { // 读入数据 int n = 0 , m = 0, q = 0; cin >> n >> m >> q; vector<vector<int>> arr(n + 1, vector<int>(m + 1)); for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) cin >> arr[i][j]; // 预处理前缀和矩阵 vector<vector<long long>> dp(n + 1, vector<long long>(m + 1)); for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) dp[i][j] = dp[i - 1][j] + dp[i][j - 1] + arr[i][j] - dp[i - 1][j - 1]; // 使用前缀和矩阵 int x1 = 0, x2 = 0, y1 = 0, y2 = 0; while(q--) { cin >> x1 >> y1 >> x2 >> y2; cout << dp[x2][y2] - dp[x1 - 1][y2] - dp[x2][y1 - 1] + dp[x1 - 1][y1 - 1] << endl; } return 0; }

 


叁  寻找数组的中心下标

3.1 题目

724. 寻找数组的中心下标 - 力扣(LeetCode)

3.2 算法解析

3.3 撰写代码

class Solution { public: int pivotIndex(vector<int>& nums) { int n = nums.size(); vector<int> f(n); vector<int> g(n); // 预处理前缀和数组和后缀和数组 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]; // 使用前缀和数组和后缀和数组 for (int i = 0; i < n; i++) if(f[i] == g[i]) return i; return -1; } };


肆  除自身以外数组的乘积

4.1 题目

238. 除自身以外数组的乘积 - 力扣(LeetCode)

4.2 算法解析

4.3 撰写代码

class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { int n = nums.size(); vector<long long> f(n), g(n); // 预处理前缀积和后缀积 f[0] = g[n - 1] = 1; for (int i = 1; i <= n - 1; 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]; // 使用前缀积和后缀积 vector<int> ret(n); for (int i = 0; i <= n - 1; i++) ret[i] = f[i] * g[i]; return ret; } };


~ 完 ~

Read more

【GitHub项目推荐--AI-Goofish-Monitor:闲鱼智能监控机器人完全指南】

简介 AI-Goofish-Monitor 是一个基于 Playwright 和 AI 技术的闲鱼(Goofish)多任务实时监控与智能分析工具。该项目由 dingyufei615 开发,通过先进的浏览器自动化技术和多模态大语言模型,为用户提供智能化的闲鱼商品监控解决方案。该工具不仅具备强大的数据采集能力,还配备了功能完善的 Web 管理界面,让用户能够轻松管理和配置监控任务。 🔗 GitHub地址 : https://github.com/dingyufei615/ai-goofish-monitor ⚡ 核心价值 : AI智能分析 · 多任务监控 · 实时通知 · Web管理界面 技术特色 : * AI驱动 :集成多模态大语言模型(GPT-4o、Gemini等),深度分析商品信息 * Web管理 :完整的可视化界面,无需命令行操作 * 多平台通知 :支持 ntfy.sh、企业微信、Bark 等多种通知方式 * 智能过滤 :基于自然语言的任务创建和AI分析标准生成 * 云原生支持 :提供

By Ne0inhk
ESP-Drone: 乐鑫 ESP32/ESP32-S2/ESP32-S3 开发的小型无人机解决方案

ESP-Drone: 乐鑫 ESP32/ESP32-S2/ESP32-S3 开发的小型无人机解决方案

目录 概述 1 主要特性 2 ESP-Drone无人机的硬件类型 3 硬件组装示意图 4 项目源代码 概述 ESP-Drone 是基于乐鑫 ESP32/ESP32-S2/ESP32-S3 开发的小型无人机解决方案,可使用手机 APP 或游戏手柄通过 Wi-Fi 网络进行连接和控制。该方案硬件结构简单,代码架构清晰,支持功能扩展,可用于 STEAM 教育等领域。 1 主要特性 ESP-Drone 具备以下特性: 支持自稳定模式 (Stabilize mode):自动控制机身水平,保持平稳飞行。支持定高模式 (Height-hold mode):自动控制油门输出,保持固定高度。支持定点模式 (Position-hold mode):自动控制机身角度,保持固定空间位置。支持 PC 上位机调试:

By Ne0inhk
AirSim无人机仿真入门(一):实现无人机的起飞与降落

AirSim无人机仿真入门(一):实现无人机的起飞与降落

概述: 安装好所需要的软件和环境,通过python代码控制无人机进行起飞和降落。 参考资料: 1、知乎宁子安大佬的AirSim教程(文字教程,方便复制) 2、B站瑜瑾玉大佬的30天RL无人机仿真教程(视频教程,方便理解) 3、AirSim官方手册(资料很全,不过是纯英文的) AirSim无人机仿真入门(一):实现无人机的起飞与降落 * 1 安装AirSim * 1.1 参考教程 * 1.2 内容梳理 * 1.3 步骤总结 * 2 开始使用 AirSim * 2.1 参考教程 * 2.2 内容梳理 * 2.3 步骤总结 * 3 撰写python控制程序 * 3.1 参考教程 * 3.2 内容梳理

By Ne0inhk
从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战

从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * 从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战 🏠💡 * 为什么选择RISC-V?🤔 * 系统整体架构概览 🧩 * 第一步:硬件选型与电路搭建 🔌 * 主控芯片选择 * 外设连接 * 第二步:开发环境搭建 🛠️ * 安装步骤(以Ubuntu为例) * 第三步:裸机驱动开发(Bare Metal)⚡ * 示例1:DHT11温湿度读取(Bit-banging) * 示例2:BH1750光照传感器(I2C) * 第四步:引入FreeRTOS实现多任务调度 🔄 * 第五步:Wi-Fi连接与MQTT通信 ☁️📡 * 连接Wi-Fi * MQTT客户端(使用esp-mqtt库) * 第六步:BLE本地控制(无需Wi-Fi)📱

By Ne0inhk