每日一练:前缀和-矩阵区域和

1314. 矩阵区域和 - 力扣(LeetCode)

题目要求:

给你一个 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

前缀和 O(N^2):

        题目的意思就是求以每个位置为中心,2*k+1为边长的正方形中的所有元素和。

        该题是二维前缀和,假设需要求某个范围t的和:

        设dp[i][j]是左上角为(0,0),右下角为(i,j)的矩形的值,那么红色区域的面积就是dp[i+k][j+k]-dp[i+k][j-k-1]-dp[i-k-1][j+k]+dp[i-k-1][j-k-1]。

        所以先创建一个dp数组,记录左上角为(0,0),右下角为(i,j)的矩形的值,然后按顺序进行填写answer即可。

        细节:

        正方形的左上角或者右下角可能越界,所以一但越界就取边界值。

class Solution {
public:vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int k) {int n = mat.size(), m = mat[0].size();vector<vector<int>> dp(n + 1, vector<int>(m + 1));for (int i = 1; i <= n; i++)for (int j = 1;j <= m; j++)dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] +mat[i - 1][j - 1];vector<vector<int>> answer(n,vector<int>(m));for(int i = 0;i < n;i++)for(int j = 0;j < m;j++){// 因为dp是从下标1开始的,所以赋值时需要加1int bottom=i+1+k,right=j+1+k;bottom=min(bottom,n);right=min(right,m);int top=i+1-k,left=j+1-k;top=max(top,1);left=max(left,1);answer[i][j]=dp[bottom][right]+dp[top-1][left-1]-dp[bottom][left-1]-dp[top-1][right];}return answer;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

革新车间照明,分布式IO模块引领智能制造新纪元

在智能制造的浪潮中&#xff0c;每一个细节的优化都是推动生产效率与能耗管理迈向新高度的关键。车间照明系统&#xff0c;作为生产环境中不可或缺的一环&#xff0c;其智能化升级正成为众多企业转型升级的重要着力点。 一、从传统到智能&#xff1a;照明系统的变革之旅 传统…

Oracle19C AWR报告分析之Operating System Statistics

Oracle19C AWR报告分析之Operating System Statistics 一、分析数据二、详细分析三、总结建议 Oracle 19C的AWR&#xff08;Automatic Workload Repository&#xff09;报告中的Operating System Statistics部分提供了操作系统层面的性能统计数据。这些指标对于分析数据库性能的…

项目进度计划表:详细的甘特图的制作步骤

甘特图&#xff08;Gantt chart&#xff09;&#xff0c;又称为横道图、条状图&#xff08;Bar chart&#xff09;&#xff0c;是一种用于管理时间和任务活动的工具。 甘特图由亨利劳伦斯甘特&#xff08;Henry Laurence Gantt&#xff09;发明&#xff0c;是一种通过条状图来…

【PyTorch][chapter 28] 揭秘 Transformer:缩放定律指南

概括 我们介绍了 LLM 的各种缩放定律&#xff0c;研究了模型损失如何随着训练数据和参数数量的增加而变化。讨论包括对用于解释 LLM 缩放定律的 IsoLoss 轮廓和 IsoFLOPs 切片的解释&#xff0c;从而为优化计算资源提供了见解。 最后&#xff0c;我们讨论了 FLOP 和 FLOPS 的概…

JavaSE(十四)——文件操作和IO

文章目录 文件操作和IO文件相关概念Java操作文件文件系统操作文件内容操作字节流FileOutputStreamFileInputStream代码演示 字符流FileWriterFileReader代码演示 缓冲流转换流 案例练习 文件操作和IO 文件相关概念 文件 通常指的是包含用户数据的文件&#xff0c;如文本文件、…

通过 SSH 管理 WordPress 网站的文件和目录

对于已经具备SSH基础知识的WordPress用户&#xff0c;进一步学习如何通过SSH命令管理网站的文件和目录至关重要。本文将介绍一些初级级别的SSH命令&#xff0c;帮助你更高效地管理WordPress网站的文件系统。 什么是 SSH 及其优势 SSH&#xff08;Secure Shell&#xff09;是一…

Cargo Rust 的包管理器

Cargo->Rust 的包管理器 Cargi简介Cargo 的主要功能1. 创建项目2. 管理依赖3. 构建项目4. 运行项目5. 测试代码6. 检查代码7. 生成文档8. 发布和分享包 Cargo 的核心文件1. Cargo.toml2. Cargo.lock **Cargo 的生态系统** 常用命令总结Hello, Cargo! 示例 Cargi简介 Cargo …

VTK知识学习(10)- 渲染引擎

1、前言 vtkProp; vtkAbstractMapper; vtkProperty; vtkCamera; vtkLight; vtkRenderer; vtkRenderWindow; vtkRenderWindowInteractor; vtkTransform; vtkLookupTable;………… 这些类都是与数据显示或渲染相关的。 用计算机图形学的专业词汇来说&#xff0c;就是它…

汽车安全再进化 - SemiDrive X9HP 与环景影像系统 AVM 的系统整合

当今汽车工业正面临著前所未有的挑战与机遇&#xff0c;随著自动驾驶技术的迅速发展&#xff0c;汽车的安全性与性能需求日益提高。在这样的背景下&#xff0c;汽车 AVM&#xff08;Automotive Visual Monitoring&#xff09;标准应运而生&#xff0c;成为促进汽车智能化和安全…

STL——vector(1)

博客ID&#xff1a;LanFuRenC系列专栏&#xff1a;C语言重点部分 C语言注意点 C基础 Linux 数据结构 C注意点 今日好题 声明等级&#xff1a;黑色->蓝色->红色 欢迎新粉加入&#xff0c;会一直努力提供更优质的编程博客&#xff0c;希望大家三连支持一下啦 目录 尾…

typecho博客主题美化总结篇—php单文件相册管理

看过我前面两期博客的都知道&#xff0c;最近lz在专心建设自己的博客。因为是基于typecho,用的朴素简洁的博客主题&#xff0c;就注定了各个模块都需要自己亲力亲为的去设计&#xff0c;开发。不过这种经由自己手从无到有&#xff0c;从朴素空白到唯美充实的过程确实也很值得期…

每日一练:【动态规划算法】斐波那契数列模型之

1. 第 N 个泰波那契数&#xff08;easy&#xff09; 1. 题目链接&#xff1a;1137. 第 N 个泰波那契数 2. 题目描述 3.题目分析 这题我们要求第n个泰波那契Tn的值&#xff0c;很明显的使用动态规划算法。 4.动态规划算法流程 1. 状态表示&#xff1a; 根据题目的要求及公…

SQL DQL查询操作

1.基本查询 select name,employee.workno,employee.age from employee;select employee.idcard as 身份证号 from employee;select employee.entrydate from employee; select distinct employee.entrydate from employee; 2.条件查询 where select * from employee where i…

Mysql 版本升级-二进制安装方式

8.0.20 -8.0.40 总体参考见下 fw_error_www 前置环境说明 glibc 版本&#xff0c;安装mysql二进制文件时需要匹配&#xff0c;安装的版本只能比系统的低 ldd --version# 查看库的位置 ldd which top | grep "libc.so"逻辑备份 卸载旧版本相关数据&#xff08;注…

【CSS3】Flex弹性布局

文章目录 前言一、基本概念1.容器和项目&#xff1a;2.主轴和交叉轴&#xff1a; 二、容器属性1.flex-direction&#xff1a;决定主轴的方向&#xff0c;即x轴还是y轴2.flex-wrap&#xff1a;定义项目的换行方式3.flex-flow&#xff1a;flex-direction属性和flex-wrap属性的简写…

vscode集成的终端里backspace键无法退格

解决办法&#xff1a; 搜索“backspace”&#xff0c;然后修改backspce对应的项的快捷键为其它按键组合&#xff0c;如下&#xff1a;

网络抓包工具tcpdump 在海思平台上的编译使用

目录 2&#xff1a;下载源码 1&#xff1a;下载 2&#xff1a;编译 2.1&#xff1a;下载 2.2&#xff1a;编译libpcap 2.3&#xff1a;编译tcpdump 3&#xff1a;使用验证 音视频开发中经常用到抓包工具分析数据&#xff0c;这里是海思平台下的tcpdump工具编译使用流程&a…

详细描述一下Elasticsearch索引文档的过程?

大家好&#xff0c;我是锋哥。今天分享关于【详细描述一下Elasticsearch索引文档的过程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 详细描述一下Elasticsearch索引文档的过程&#xff1f; Elasticsearch的索引文档过程是其核心功能之一&#xff0c;涉及将数据存储到…

Android:任意层级树形控件(有效果图和Demo示例)

先上效果图&#xff1a; 1.创建treeview文件夹 2.treeview -> adapter -> SimpleTreeAdapter.java import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ListView; i…

Jmeter中的断言(四)

13--XPath断言 功能特点 数据验证&#xff1a;验证 XML 响应数据是否包含或不包含特定的字段或值。支持 XPath 表达式&#xff1a;使用 XPath 表达式定位和验证 XML 数据中的字段。灵活配置&#xff1a;可以设置多个断言条件&#xff0c;满足复杂的测试需求。 配置步骤 添加…