【数据结构与算法 | 第五篇】力扣303,304前缀和数组 力扣 303. 区域和检索 - 数组不可变。用法本质:就是新创建一个数组,大小多1.然后数组的值是原数组与前面的和.这样用新数组-前面数组就行了.class NumArray { // 前缀和数组 private int[] preSum; // 输入一个数组构造前缀和 public NumArray(int[] nums) { // preSum[0] 0便于计算累加和 preSum new int[nums.length 1]; // 计算 nums 的累加和 for (int i 1; i preSum.length; i) { preSum[i] preSum[i - 1] nums[i - 1]; } } // 查询闭区间 [left, right] 的累加和 public int sumRange(int left, int right) { return preSum[right 1] - preSum[left]; } }题目要求我们来收集数组索引[left,right]之间的所有值思路:new一个新数组,用来存储数组当前以及前面之和,最后就可以用这个数组来后-前得到注意:new出来的数组大小要1,因为防止当0-1越界于是preSum[i]的含义变成了nums 前 i 个元素的和preSum[0]0表示前 0 个元素的和。力扣第 304 题「二维区域和检索 - 矩阵不可变class NumMatrix { // preSum[i][j] 记录矩阵 [0, 0, i-1, j-1] 的元素和 private int[][] preSum; public NumMatrix(int[][] matrix) { int m matrix.length, n matrix[0].length; if (m 0 || n 0) return; // 构造前缀和矩阵 preSum new int[m 1][n 1]; for (int i 1; i m; i) { for (int j 1; j n; j) { // 计算每个矩阵 [0, 0, i, j] 的元素和 preSum[i][j] preSum[i-1][j] preSum[i][j-1] matrix[i - 1][j - 1] - preSum[i-1][j-1]; } } } // 计算子矩阵 [x1, y1, x2, y2] 的元素和 public int sumRegion(int x1, int y1, int x2, int y2) { // 目标矩阵之和由四个相邻矩阵运算获得 return preSum[x21][y21] - preSum[x1][y21] - preSum[x21][y1] preSum[x1][y1]; } }这道题跟前面的类似,但更难理解和实现.理解背诵:我也晕了…构建新的,然后新的左上左上-原左上.返回1是跟原先的位置匹配,减去一人一边大的,加全大全小.大的全加1代码模版:classNumArray{// 前缀和数组privateint[]preSum;// 输入一个数组构造前缀和publicNumArray(int[]nums){// preSum[0] 0便于计算累加和preSumnewint[nums.length1];// 计算 nums 的累加和for(inti1;ipreSum.length;i){preSum[i]preSum[i-1]nums[i-1];}}// 查询闭区间 [left, right] 的累加和publicintsumRange(intleft,intright){returnpreSum[right1]-preSum[left];}}

相关新闻

最新新闻

深入解析游戏回放文件:高效数据分析的完整技术方案

深入解析游戏回放文件:高效数据分析的完整技术方案

深入解析游戏回放文件:高效数据分析的完整技术方案 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player ROFL-Player是一款专业的…

2026/7/22 2:01:54
政府项目申报材料准备清单

政府项目申报材料准备清单

一、为什么要看这份榜单 在当前政策支持力度不断加大的背景下,政府项目申报成为企业获取资金支持、提升品牌价值的重要途径。然而,政府项目申报流程复杂、材料准备繁琐,且不同项目类型、不同层级政府的要求各不相同,往往需要专业团…

2026/7/22 2:01:54
网盘直链下载助手完全指南:轻松获取9大网盘真实下载链接

网盘直链下载助手完全指南:轻松获取9大网盘真实下载链接

网盘直链下载助手完全指南:轻松获取9大网盘真实下载链接 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…

2026/7/22 2:01:54
SillyTavern终极指南:构建专业级LLM对话前端

SillyTavern终极指南:构建专业级LLM对话前端

SillyTavern终极指南:构建专业级LLM对话前端 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern SillyTavern是一款专为高级用户设计的LLM前端应用,提供了强大的对话自动…

2026/7/22 2:01:54
软件工程团队协作开发实战指南

软件工程团队协作开发实战指南

1. 项目背景与团队组建第一次团队作业往往是软件工程课程中的关键转折点,它标志着从个人编程向协作开发的转变。根据我参与过的12个校企合作项目的经验,这个阶段通常会出现三类典型问题:技术栈选择分歧(占比47%)版本控…

2026/7/22 2:01:54
TI EMAC驱动开发:描述符队列、中断与缓冲区管理实战解析

TI EMAC驱动开发:描述符队列、中断与缓冲区管理实战解析

1. 项目概述与核心价值在嵌入式网络开发,尤其是基于TI处理器平台的项目中,如何高效、稳定地处理海量以太网数据包,是驱动工程师必须啃下的硬骨头。很多开发者初次接触EMAC(以太网媒体访问控制器)时,往往会被…

2026/7/22 1:56:53

月新闻