LeetCode304. Range Sum Query 2D - Immutable

文章目录

    • 一、题目
    • 二、题解

一、题目

Given a 2D matrix matrix, handle multiple queries of the following type:

Calculate the sum of the elements of matrix inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).
Implement the NumMatrix class:

NumMatrix(int[][] matrix) Initializes the object with the integer matrix matrix.
int sumRegion(int row1, int col1, int row2, int col2) Returns the sum of the elements of matrix inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).
You must design an algorithm where sumRegion works on O(1) time complexity.

Example 1:

Input
[“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]]
Output
[null, 8, 11, 12]

Explanation
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 (i.e sum of the red rectangle)
numMatrix.sumRegion(1, 1, 2, 2); // return 11 (i.e sum of the green rectangle)
numMatrix.sumRegion(1, 2, 2, 4); // return 12 (i.e sum of the blue rectangle)

Constraints:

m == matrix.length
n == matrix[i].length
1 <= m, n <= 200
-104 <= matrix[i][j] <= 104
0 <= row1 <= row2 < m
0 <= col1 <= col2 < n
At most 104 calls will be made to sumRegion.

二、题解

class NumMatrix {
public:int sum[205][205];NumMatrix(vector<vector<int>>& matrix) {int m = matrix.size();int n = matrix[0].size();for(int i = 0;i <= m;i++) sum[i][0] = 0;for(int j = 0;j <= n;j++) sum[0][j] = 0;for(int i = 1;i < m + 1;i++){for(int j = 1;j < n + 1;j++){sum[i][j] = matrix[i-1][j-1];}}for(int i = 1;i <= m;i++){for(int j = 1;j <= n;j++){sum[i][j] += sum[i][j-1] + sum[i-1][j] - sum[i-1][j-1];}}}int sumRegion(int row1, int col1, int row2, int col2) {row2++;col2++;return sum[row2][col2] - sum[row2][col1] - sum[row1][col2] + sum[row1][col1];}
};/*** Your NumMatrix object will be instantiated and called as such:* NumMatrix* obj = new NumMatrix(matrix);* int param_1 = obj->sumRegion(row1,col1,row2,col2);*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/620138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥——第 3 场 小白入门赛(A-D)

文章目录 一、题目A.召唤神坤基本思路&#xff1a;代码 B.聪明的交换策略基本思路&#xff1a;代码 C.怪兽突击基本思路&#xff1a;代码 D.蓝桥快打基本思路代码 一、题目 A.召唤神坤 基本思路&#xff1a; 贪心&#xff0c; 使结果最大&#xff0c;希望两边w[i],w[k]是较大…

Oracle数据库 CentOS7上修改hostname后无法启动解决办法

目录 一、问题背景 二、解决问题 三、重启数据库 四、重启监听 一、问题背景 CentOS系统需要修改hostname&#xff0c;修改后oracle数据库无法启动和正常运行。 系统&#xff1a;CentOS7.3 数据库版本&#xff1a;Oracle 11g Express Edtion 二、解决问题 通过which orac…

提交代码,SVN被锁定,提示:svn is already locked解决方案

今天遇到一个问题&#xff0c;svn 在提交代码的时候出现了svn is already locked&#xff0c;解决方案如下图 点击clean up 点击ok即可 来看官方对clean up的解释&#xff1a;它的作用就是查找工作拷贝中的所有遗留的日志文件&#xff0c;删除进程中工作拷贝的锁。 参考&…

tl431几种不常见的接法

tl431可调电源电路图分析 精密电压基准IC TL431是我们常见的精密电压基准IC &#xff0c;应用非常广泛。其输出压连续可调达36V&#xff0c;工作电流范围宽达0.1--100mA&#xff0c;动态电阻典型值为0.22欧&#xff0c;输出杂波低。图1是利用它作电压基准和驱动外加场效应管K7…

(学习日记)2024.01.09

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

Springboot WebFlux项目结合mongodb进行crud

第一步&#xff1a;创建项目 第二步&#xff1a;给mongodb插入数据 第三步&#xff1a;创建实体类 package org.cyl.test02.entity;// Task.java import lombok.Data;Data public class Task {private String id;private String description; }第四步&#xff1a;创建Reposito…

CSS 面试题

CSS 面试题 1. 什么是盒模型&#xff08;Box Model&#xff09;&#xff1f;它由哪些部分组成&#xff1f; 答案&#xff1a;盒模型是指在 CSS 中&#xff0c;每个元素都被看作是一个矩形的盒子&#xff0c;该盒子由四个部分组成&#xff1a;内容&#xff08;content&#xf…

C语言指针进阶学习心得-函数指针,指针函数,指针数组,数组指针

一&#xff1a;指针数组和数组指针 1.指针数组&#xff1a;指针数组的元素都是指向某种数据类型的指针 例&#xff1a; 声明方式&#xff1a;int *ptr[3]; ptr数组的元素都是指向int类型的数据 #include <stdio.h>int main() { int *ptr[3];//数组…

FreeRTOS 学习相关笔记 附C语言内容补充

学习视频为【正点原子】手把手教你学FreeRTOS实时系统 文章目录 RTOS 入门裸机RTOSFreeRTOS任务调度方式任务状态 FreeRTOS 移植系统配置文件 API函数任务创建和删除动态方式创建任务静态方式创建任务删除任务 任务挂起和恢复函数调度器挂起与恢复临界区任务调度器的挂起和恢复…

鸿蒙开发已解决-Failed to connect to gitee.com port 443: Time out 连接超时提示

文章目录 项目场景:问题描述原因分析:解决方案:解决方案1解决方案2:解决方案3:此Bug解决方案总结解决方案总结**心得体会:解决连接超时问题的三种方案**项目场景: 导入Sample时遇到导入失败的情况,并提示“Failed to connect to gitee.com port 443: Time out”连接超…

实战使用工具appuploader上线发布苹果商店

实战使用工具appuploader上线发布苹果商店 我们发布ios应用的时候&#xff0c;步骤繁琐&#xff0c;非常耗时&#xff0c;appuploader工具就是解决一站式从上传到发布到appstore应用商店的&#xff0c;当我们开发完app后&#xff0c;需要将ipa/apk提交给测试人员测试&#xff0…

【python】No module named ‘pip‘问题

一、问题描述 win11上安装的Python版本有几个&#xff0c;不知道那里出问题了。用pip总是提示&#xff1a; Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line …

完整的JAVA酒店管理系统源码带安装部署文档

完整的JAVA酒店管理系统源码带安装部署文档 002.png (135.63 KB, 下载次数: 0) 下载附件 设为封面 半小时前 上传

鸿蒙开发现在就业前景怎样?

随着科技的不断进步&#xff0c;鸿蒙系统逐渐崭露头角&#xff0c;成为智能设备领域的一颗新星。作为华为自主研发的操作系统&#xff0c;鸿蒙系统拥有着广阔的市场前景和就业机会。那么&#xff0c;鸿蒙开发的就业前景究竟怎样呢&#xff1f; 一、市场需求持续增长 随着鸿蒙…

OpenHarmony源码解析之编译构建

前言 OpenHarmony是由开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;孵化及运营的开源项目&#xff0c;目标是面向全场景、全连接、全智能时代、基于开源的方式&#xff0c;搭建一个智能终端设备操作系统的框架和平台&#xff0c;促进万物互联产业的繁荣发展…

Redis五大数据类型以及相关操作

Redis五大数据类型 文章目录 Redis五大数据类型key字符串string操作命令列表list集合set哈希hash有序集合zset (sorted set) key keys * 查看当前库的所有键exists <key> 判断某个键是否存在type <key> 查看键的类型del <key> 删除某个键expire <key>…

vue3-计算属性

计算属性 模板中的表达式虽然方便&#xff0c;但也只能用来做简单的操作。如果在模板中写太多逻辑&#xff0c;会让模板变得臃肿&#xff0c;难以维护。 根据作者今年是否看过书展示不同信息 <script lang"ts" setup> import { ref, reactive } from "…

Spring DI的理解和实现方式

Spring DI&#xff1a; 名词解释&#xff1a;依赖注入&#xff0c;是对IOC概念的不同角度的描述&#xff0c;是指应用程序在运行时&#xff0c; 每一个bean对象都依赖IOC容器注入当前bean对象所需要的另外一个bean 对象。&#xff08;例如在MyBatis整合Spring时&#xff0c;Sq…

杨中科 .NETCORE ENTITY FRAMEWORK CORE-1 EFCORE 第一部分

一 、什么是EF Core 什么是ORM 1、说明: 本课程需要你有数据库、SOL等基础知识。 2、ORM: ObjectRelational Mapping。让开发者用对象操作的形式操作关系数据库 比如插入: User user new User(Name"admin"Password"123”; orm.Save(user);比如查询: Book b…

C#进阶学习

目录 简单数据结构类ArrayList声明增删查改遍历装箱拆箱 Stack声明增取查改遍历装箱拆箱 Queue声明增取查改遍历 Hashtable声明增删查改遍历装箱拆箱 泛型泛型分类泛型的作用泛型约束 常用泛型数据结构类List声明增删查改遍历 Dictionary声明增删查改遍历 LinkedList声明增删查…