当前位置: 首页 > 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. 区域和检索 - 数组不可变

http://www.lryc.cn/news/133982.html

相关文章:

  • 记一次oracle数据库迁移至mysql数据库(表同步)
  • 打怪升级之从零开始的网络协议
  • Lnton羚通算法算力云平台【PyTorch】教程:torch.nn.Softsign
  • 读SQL学习指南(第3版)笔记02_数据类型
  • 易思智能物流无人值守系统文件上传漏洞复现
  • git获取远端分支和merge
  • linux-进程
  • 整数数组区间的插入与删除
  • Git标签
  • BarCodeWiz ActiveX Control Crack
  • mysql高版本(8.0+)group_by报错的处理方法
  • Java 下载压缩zip
  • GTK3实现自定义列表
  • Go语言基础之数组
  • 信息安全从业者考试认证大全
  • 详解react 15~18新增特性
  • SpringBoot整合FFmpeg进行视频分片上传(Linux)
  • eNSP综合小实验:VRRP、MSTP、Eth-Trunk、NAT、DHCP等技术应用
  • 正中优配:尾盘拉升的股票第二天的走势?
  • ios小组件报错:Please adopt containerBackground API
  • 基于AWS的3D模型搜索服务实现
  • pycharm远程连接docker容器
  • 开源全球地理空间数据可视化框架——Cesium学习(2023.8.21)
  • RT-Thread学习日记——点亮LED
  • 粘包问题(TCP面向字节流批量发送数据导致)
  • selenium Chrome驱动下载地址
  • Linux命令200例:tar命令主要用于创建、查看和提取归档文件(常用)
  • 【Django】Task4 序列化及其高级使用、ModelViewSet
  • FFMPEG RTMP流打开速度慢优化方法一
  • NextJs - Middleware(中间件)