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

leetcode304. 二维区域和检索 - 矩阵不可变(java)

前缀和数组

  • 二维区域和检索 - 矩阵不可变
    • 题目描述
    • 前缀和
    • 代码演示
  • 一维数组前缀和

二维区域和检索 - 矩阵不可变

难度 - 中等
原题链接 - 二维区域和检索 - 矩阵不可变

题目描述

给定一个二维矩阵 matrix,以下类型的多个请求:
计算其子矩形范围内元素的总和,该子矩阵的 左上角 为 (row1, col1) ,右下角 为 (row2, col2) 。
实现 NumMatrix 类:
NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进行初始化
int sumRegion(int row1, int col1, int row2, int col2) 返回 左上角 (row1, col1) 、右下角 (row2, col2) 所描述的子矩阵的元素 总和 。

示例1:
在这里插入图片描述
输入:
[“NumMatrix”,“sumRegion”,“sumRegion”,“sumRegion”]
[[[[3,0,1,4,2],[5,6,3,2,1],[1,2,0,1,5],[4,1,0,1,7],[1,0,3,0,5]]],[2,1,4,3],[1,1,2,2],[1,2,2,4]]
输出:
[null, 8, 11, 12]
解释:
NumMatrix numMatrix = new NumMatrix([[3,0,1,4,2],[5,6,3,2,1],[1,2,0,1,5],[4,1,0,1,7],[1,0,3,0,5]]);
numMatrix.sumRegion(2, 1, 4, 3); // return 8 (红色矩形框的元素总和)
numMatrix.sumRegion(1, 1, 2, 2); // return 11 (绿色矩形框的元素总和)
numMatrix.sumRegion(1, 2, 2, 4); // return 12 (蓝色矩形框的元素总和)

提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 200
-105 <= matrix[i][j] <= 1e5
0 <= row1 <= row2 < m
0 <= col1 <= col2 < n
最多调用 104 次 sumRegion 方法

在这里插入图片描述

前缀和

和一维数组类似.也是先定义一个前缀和数组,求出前缀和的值,然后调用区间值时,就可以用前缀和进行计算.
注意:前缀和数组下标从1开始.
在这里插入图片描述

代码演示

class NumMatrix {int[][] sums;public NumMatrix(int[][] matrix) {int m = matrix.length;if (m > 0) {int n = matrix[0].length;sums = new int[m + 1][n + 1];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {sums[i + 1][j + 1] = sums[i][j + 1] + sums[i + 1][j] - sums[i][j] + matrix[i][j];}}}}public int sumRegion(int row1, int col1, int row2, int col2) {return sums[row2 + 1][col2 + 1] - sums[row1][col2 + 1] - sums[row2 + 1][col1] + sums[row1][col1];}}

一维数组前缀和

leetcode303. 区域和检索 - 数组不可变

相关文章:

leetcode304. 二维区域和检索 - 矩阵不可变(java)

前缀和数组 二维区域和检索 - 矩阵不可变题目描述前缀和代码演示 一维数组前缀和 二维区域和检索 - 矩阵不可变 难度 - 中等 原题链接 - 二维区域和检索 - 矩阵不可变 题目描述 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总…...

记一次oracle数据库迁移至mysql数据库(表同步)

目录 一、利用Navicat将oracle迁移至mysql数据库 1、建立数据传输 2、选择需要迁移的数据库跟目标库 3、数据传输选项 4、选择需要迁移表信息 二、迁移之后遇到的一些问题 1、大小写问题 2、数据库函数问题 3、sql语句是否使用空格隔开问题 4、关于子查询别命名问题 …...

打怪升级之从零开始的网络协议

序言 三个多月过去了&#xff0c;我又来写博客了&#xff0c;这一次从零开始学习网络协议。 总的来说&#xff0c;计算机网络很像现实生活中的快递网络&#xff0c;其最核心的目标&#xff0c;就是把一个包裹&#xff08;信息&#xff09;从A点发送到B点去。下面是一些共同的…...

Lnton羚通算法算力云平台【PyTorch】教程:torch.nn.Softsign

torch.nn.Softsign 原型 CLASS torch.nn.Softsign() 图 代码 import torch import torch.nn as nnm nn.Softsign() input torch.randn(4) output m(input)print("input: ", input) print("output: ", output)# input: tensor([ 0.0046, -0.4135, -2…...

读SQL学习指南(第3版)笔记02_数据类型

1. 命令行工具 1.1. mysql -u root -p; 1.2. mysql&#xff1e; show databases; 1.3. mysql&#xff1e; use sakila; 1.4. mysql&#xff1e; SELECT now(); 1.4.1. now()是MySQL的内建函数 1.4.2. 返回当前日期和时间 1.5. mysql&#xff1e; SELECT now() FROM dual…...

易思智能物流无人值守系统文件上传漏洞复现

0x01 产品简介 易思无人值守智能物流系统是一款集成了人工智能、机器人技术和物联网技术的创新产品。它能够自主完成货物存储、检索、分拣、装载以及配送等物流作业&#xff0c;帮助企业实现无人值守的智能物流运营&#xff0c;提高效率、降低成本&#xff0c;为现代物流行业带…...

git获取远端分支和merge

要将远程分支拉取到本地&#xff0c;你可以使用以下命令&#xff1a; 1. 首先&#xff0c;使用git fetch命令从远程仓库获取最新的分支信息&#xff1a; git fetch origin 这个命令将会将远程仓库origin的分支信息下载到本地。 2. 接下来&#xff0c;可以使用git checkout命…...

linux-进程

文章目录 1.先谈硬件冯诺依曼体系结构 2.再谈软件操作系统什么是操作系统&#xff1f;为什么要有操作系统&#xff1f;如何管理&#xff1f;系统调用 3.再谈进程那么具体Linux是怎么做的?指令 ps ajx 查看所有进程 非实时top 实时查看进程 相当于任务管理器ls /proc 内存级进程…...

整数数组区间的插入与删除

相似题参考&#xff1a; 56. Merge Intervals - 力扣&#xff08;LeetCode&#xff09;合并区间 57. 插入区间 - 力扣&#xff08;LeetCode&#xff09; 1272. 删除区间 package Jerry;import org.junit.Assert; import org.junit.Test;import java.util.ArrayList; import…...

Git标签

Git 中的标签&#xff0c;指的是某个分支某个特定时间点的状态(静态)。通过标签&#xff0c;可以很方便的切换到标记时的状态。 比较有代表性的是人们会使用这个功能来标记发布结点 (v1.0、v1.2等)。 下面是myatis-plus的标签: 1 标签相关命令 命令作用git tag查看标签&…...

BarCodeWiz ActiveX Control Crack

BarCodeWiz ActiveX Control Crack BarcodeWiz ActiveX Control–只需单击按钮即可将所有基本条形码类型添加到Microsoft Office中。在Microsoft Word中&#xff0c;创建单独的条形码、标签页或合并文档。在Microsoft Excel中&#xff0c;选择单元格范围并自动将每个单元格转换…...

mysql高版本(8.0+)group_by报错的处理方法

mysql高版本8.0 group_by报错的处理方法 1. 原因2. 处理方法2.1 临时方法,重启后失效2.2 修改配置my.ini文件 1. 原因 这个错误一般发生在mysql 5.7以及 5.7以上的版本中&#xff0c;其原因是mysql的默认配置中,sql_mode“ONLY_FULL_GROUP_BY” 这个配置严格执行了 ‘SQL92标准…...

Java 下载压缩zip

Java压缩zip /*** 下载压缩包** param instId 实例id* param response 响应* author 梁伟浩* date 2023-08-21*/GetMapping("/downloadZip")ApiOperation(value "下载压缩包")ApiImplicitParam(name "instId", value "实例id", r…...

GTK3实现自定义列表

使用gtk,如果想自己定义列表,思路可以将每个列表项作为一个hbox,整个列表是一个vbox。通过对容器动态的添加删除,实现列表操作,同时添加任何自己所需要的控件。 下面的例子是实现一个显示图片、按钮和进度条的列表,并且进行上移下移,具有添加和删除列表项功能但没有演示…...

Go语言基础之数组

Array(数组) 数组是同一种数据类型元素的集合。 在Go语言中&#xff0c;数组从声明时就确定&#xff0c;使用时可以修改数组成员&#xff0c;但是数组大小不可变化。 基本语法&#xff1a; // 定义一个长度为3元素类型为int的数组a var a [3]int数组定义&#xff1a; var 数…...

信息安全从业者考试认证大全

证书是IT从业者知识水平能力的一个体现&#xff0c;考证同时也是拓展自身知识的一个方法。近年来&#xff0c;安全行业风生水起&#xff0c;各种认证层出不穷&#xff0c;眼花缭乱。这里不对任何一个证书做评价&#xff0c;只是做出介绍&#xff0c;在国内&#xff0c;对任何事…...

详解react 15~18新增特性

React 15.x 版本的新增特性&#xff1a; 创建组件类&#xff1a;在 React 15 中&#xff0c;可以使用 createClass 方法来创建组件类。这个方法允许你定义组件的生命周期方法、渲染函数以及其他功能。 PropTypes&#xff1a;React 15 引入了 PropTypes&#xff0c;它是一种用于…...

SpringBoot整合FFmpeg进行视频分片上传(Linux)

SpringBoot整合FFmpeg进行视频分片上传&#xff08;Linux&#xff09; 上传的核心思路&#xff1a; 1.将文件按一定的分割规则&#xff08;静态或动态设定&#xff0c;如手动设置20M为一个分片&#xff09;&#xff0c;用slice分割成多个数据块。 2.为每个文件生成一个唯一标识…...

eNSP综合小实验:VRRP、MSTP、Eth-Trunk、NAT、DHCP等技术应用

完成下图要求&#xff1a; 拓扑图&#xff1a; 配置命令&#xff1a; 由于交换机日志太多不便于复制&#xff0c;所以就复制命令。大概步骤如下&#xff1a; 第一步先分配IP地址&#xff0c;在sw1和sw2上创建VLAN100用于e0/0/3口配IP&#xff0c;在sw1、sw2、sw3、sw4上创建VL…...

正中优配:尾盘拉升的股票第二天的走势?

尾盘拉升是指买卖日快结束时股票价格呈现上涨的状况。关于许多投资者来说&#xff0c;这一般是好事情&#xff0c;因为它可认为他们带来更高的收益。但是&#xff0c;人们常常会问尾盘拉升的股票第二天的走势怎么。本文将从多个角度进行剖析。 首要&#xff0c;咱们需求认识到这…...

(二)进程的状态优先级

1进程的状态(兼容所有操作系统)1.1并行和并发CPU执行进程代码&#xff0c;不是把进程代码执行完毕&#xff0c;才开始执行下一个 而是给每一个进程预分配一个 时间片&#xff0c;基于时间片&#xff0c;进行调度轮转(单CPU下)&#xff0c;并发。并发&#xff1a;多个进程在一个…...

基于Claude的代码库感知工具:智能编程助手的设计与实战

1. 项目概述&#xff1a;当Claude遇上代码库&#xff0c;一个智能编程助手的诞生最近在GitHub上看到一个挺有意思的项目&#xff0c;叫openclaw-claude-code。光看名字&#xff0c;你可能会觉得这又是一个基于某个大语言模型的代码生成工具&#xff0c;但实际深入了解后&#x…...

AI养老服务兴起:代写回忆录爆火,技术短板与市场乱象待解?

AI正在替人尽孝五六年前&#xff0c;采访北京一家智慧养老院&#xff0c;其为每个房间配智能音箱&#xff0c;用AI陪老人聊天等。今年回访&#xff0c;智能陪伴设备已停用。2023年新技术催生新AI养老服务&#xff0c;如2024年下半年AI代写回忆录风潮&#xff0c;从业者能月入过…...

对话式AI智能中继与编排框架:构建高可用AI应用的核心架构

1. 项目概述&#xff1a;一个面向对话式AI的智能中继与编排框架最近在折腾一个挺有意思的开源项目&#xff0c;叫ChatAgentRelay。乍一看这个名字&#xff0c;可能觉得它又是一个聊天机器人框架&#xff0c;但深入把玩之后&#xff0c;我发现它的定位其实更精准&#xff0c;也更…...

图片换背景底色怎么制作?2026年最全工具对比和实操指南

前几天&#xff0c;有个朋友问我怎样快速给证件照换个蓝色背景&#xff0c;我才意识到很多人其实不知道现在换背景底色有多简单。无论是证件照、商品图、还是自媒体头图&#xff0c;一键就能搞定。今天我就把自己用过的所有工具和方法整理出来&#xff0c;分享给大家。为什么越…...

揭秘AMD处理器底层控制:Ryzen SDT调试工具从入门到精通

揭秘AMD处理器底层控制&#xff1a;Ryzen SDT调试工具从入门到精通 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…...

全栈代码资源聚合库:开发者如何高效利用开源代码示例提升工程能力

1. 项目概述&#xff1a;一个面向开发者的全栈代码资源聚合库最近在GitHub上看到一个挺有意思的项目&#xff0c;叫wuwangzhang1216/claude-code-source-all-in-one。光看这个名字&#xff0c;你大概能猜到这是个什么——没错&#xff0c;这是一个围绕“代码”和“源代码”做文…...

Intel Lunar Lake核显架构解析:Xe2-LPG如何重塑轻薄本图形性能

1. 项目概述&#xff1a;一次架构驱动的核显革命最近&#xff0c;Intel Lunar Lake&#xff08;月亮湖&#xff09;移动处理器的核显性能数据开始陆续曝光&#xff0c;行业内讨论的热度很高。作为一个长期关注移动平台图形性能的从业者&#xff0c;我第一时间梳理了目前能获取到…...

从Referrer Policy入手:剖析Chrome中strict-origin-when-cross-origin对POST请求的拦截与应对

1. 当POST请求突然"沉默"&#xff1a;一个前端开发者的困惑 最近在调试一个前后端分离项目时&#xff0c;我遇到了一个诡异的现象&#xff1a;前端代码明明成功调用了后端接口&#xff0c;但响应数据却始终为空。打开Chrome开发者工具&#xff0c;控制台里赫然显示着…...

终极指南:Task代码审查的10个质量控制最佳实践

终极指南&#xff1a;Task代码审查的10个质量控制最佳实践 【免费下载链接】task A fast, cross-platform build tool inspired by Make, designed for modern workflows. 项目地址: https://gitcode.com/gh_mirrors/ta/task Task作为一款受Make启发的现代化构建工具&am…...