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

(力扣)1314.矩阵区域和

给你一个 m x n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和: 

  • i - k <= r <= i + k,
  • j - k <= c <= j + k 且
  • (r, c) 在矩阵内。

示例 1:

输入:mat = [[1,2,3],[4,5,6],[7,8,9]], k = 1
输出:[[12,21,16],[27,45,33],[24,39,28]]

示例 2:

输入:mat = [[1,2,3],[4,5,6],[7,8,9]], k = 2
输出:[[45,45,45],[45,45,45],[45,45,45]]

提示:

  • m == mat.length
  • n == mat[i].length
  • 1 <= m, n, k <= 100
  • 1 <= mat[i][j] <= 100

此题可以用前缀和来做,但是比较难点儿的是边界不好控制!!接下来看看代码吧~

class Solution {
public:
vector<vector<int>> sums;vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int k) {int rlen=mat.size(),clen=mat[0].size();sums.resize(rlen+1,vector<int>(clen+1));//初始化空间for(int i=1;i<=rlen;i++){for(int j=1;j<=clen;j++){sums[i][j]=sums[i-1][j]+sums[i][j-1]-sums[i-1][j-1]+mat[i-1][j-1];//求前缀和}}vector<vector<int>> res(rlen,vector<int>(clen));//此处一定要初始化空间,否则报空指针for(int i=0;i<rlen;i++){for(int j=0;j<clen;j++){// 分别获取左上角和右下角的坐标int r1=max(i-k,0),c1=max(j-k,0);int r2=min(i+k,rlen-1),c2=min(j+k,clen-1);// 通过二维前缀和公式获取某个区间内的和res[i][j]=sums[r2+1][c2+1]-sums[r2+1][c1]-sums[r1][c2+1]+sums[r1][c1];}}return res;}
};

提交通过!

相关文章:

  • 零代码3D可视化快速开发平台
  • 金融行业专题|证券超融合架构转型与场景探索合集(2023版)
  • C#,佩尔数(Pell Number)的算法与源代码
  • 正点原子--STM32基本定时器学习笔记(2)
  • Stable Diffusion 模型下载:Samaritan 3d Cartoon(撒玛利亚人 3d 卡通)
  • ES6-数组的解构赋值
  • 开源软件对技术以及行业发展的影响
  • 小米平板6获取root权限教程
  • 2 月 7 日算法练习- 数据结构-树状数组上二分
  • 《合成孔径雷达成像算法与实现》Figure6.8
  • 零基础学Python之整合MySQL
  • Flask 入门7:使用 Flask-Moment 本地化日期和时间
  • macOS的设置与常用软件(含IntelliJ IDEA 2023.3.2 Ultimate安装,SIP的关闭与开启)
  • 系统架构设计师-22年-上午答案
  • 《Git 简易速速上手小册》第1章:Git 基础(2024 最新版)
  • Android单元测试 - 几个重要问题
  • avalon2.2的VM生成过程
  • HashMap剖析之内部结构
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Linux gpio口使用方法
  • Python连接Oracle
  • Vue.js源码(2):初探List Rendering
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 将回调地狱按在地上摩擦的Promise
  • 力扣(LeetCode)56
  • 前端临床手札——文件上传
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #QT(智能家居界面-界面切换)
  • $forceUpdate()函数
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (一)Neo4j下载安装以及初次使用
  • 、写入Shellcode到注册表上线
  • .a文件和.so文件
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 使用 XPath 来读写 XML 文件
  • .net反编译的九款神器
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .net下的富文本编辑器FCKeditor的配置方法
  • [ Linux ] Linux信号概述 信号的产生
  • [20171102]视图v$session中process字段含义
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [4.9福建四校联考]
  • [AIGC] Java 和 Kotlin 的区别
  • [C++] new和delete
  • [COI2007] Sabor
  • [I2C]I2C通信协议详解(二) --- I2C时序及规格指引
  • [jquery]this触发自身click事件,当前控件向上滑出
  • [leetcode] 103. 二叉树的锯齿形层次遍历
  • [lesson17]对象的构造(上)
  • [Linux]进程信号(信号入门 | 信号产生的方式 | 信号捕捉初识)