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

思路:
这题是典型矩阵前缀和问题。

vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int K) {vector<vector<int>> res(mat.size(),vector<int>(mat[0].size()));//先求出前缀和vector<vector<int>> dp(mat.size()+1,vector<int>(mat[0].size()+1));int row  = mat.size();int col = mat[0].size();//前缀和for(int i = 1; i <= mat.size(); i++){for(int j = 1; j <= mat[0].size(); ++j){dp[i][j] = mat[i - 1][j - 1] + dp[i][j - 1] + dp[i - 1][j] - dp[i - 1][j - 1];}}//求和for (int i = 1; i <= row; i++) {for (int j = 1; j <= col; j++) {int x0 = max(i - K - 1, 0);int x1 = min(i + K, row);int y0 = max(j - K - 1, 0);int y1 = min(j + K, col);res[i - 1][j - 1] = dp[x1][y1] - dp[x1][y0] - dp[x0][y1] + dp[x0][y0];}}return res;}

leetcode题库1314-- 矩阵区域和相关推荐

  1. LeetCode题库第867题 转置矩阵

    LeetCode题库第867题 转置矩阵 LeetCode题库第867题 转置矩阵 我首先想到的方法是新建一个二维的矩阵,然后遍历原来的矩阵,将每一个元素放在新矩阵中该放的位置: // javapub ...

  2. LeetCode题库第888题 公平的糖果棒交换

    LeetCode题库第888题 公平的糖果棒交换 LeetCode第888道题 公平的糖果棒交换 首先,题目中说他们两个人的糖果的总数量是不一样的,并且要将A中的一个糖果和B的一个糖果交换后使得他们两 ...

  3. LeetCode题库第2题 两数相加

    两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...

  4. LeetCode题库第1题 两数之和

    两数之和 LeetCode题库第1题 两数之和 看到题,我就想到了暴力法: public int[] force(int[] nums,int target) {for (int i = 0; i & ...

  5. LeetCode题库整理【Java】—— 3 无重复字符的最长子串

    LeetCode题库整理[Java] ## 3 无重复字符的最长子串 题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" ...

  6. LeetCode题库整理【Java】—— 2 两数相加

    LeetCode题库整理[Java] 2.两数相加 题目:给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果, ...

  7. LeetCode题库整理【Java】—— 7整数反转

    LeetCode题库整理[Java] 7.整数反转 题目:给出一个32位的有符号整数,你需要将这个这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例2: 输入: -123 ...

  8. LeetCode题库整理【Java】—— 1两数之和

    LeetCode题库整理[Java] 1.两数之和 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nu ...

  9. leetcode题库:4.两个排序数组的中位数

    题目: /**   *leetcode题库:4. 求两个排序数组的中位数  *  *  给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 .  *  请找出这两个有序数组的中位数. ...

  10. LeetCode 题库 全 JAVA 解题---771.宝石与石头

    LeetCode 题库 全 JAVA 解题 771.宝石与石头 原题回顾: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥 ...

最新文章

  1. cocos 射线检测 3D物体 (Sprite3D点击)
  2. php kint调试,PHP调试助手
  3. object数据类型
  4. TLS是如何保障数据传输安全(中间人攻击)
  5. C#表格文字多收缩样式
  6. QTP User-Defined Function 学习经验汇总
  7. javascrip中setTimeout和setInterval
  8. 阿里云Serverless,全球第一!
  9. 百度网盘加速教程(绝对有效)
  10. 32位无符号整数快开方函数
  11. 计算机电源德国产,德国原装崇拜者来一发?BeQuiet! Straight Power 11全模电源
  12. ZooZ应用内移动支付解决方案公司获150万美金种子投资
  13. oracle的日期时间转换日期,oracle 的时间日期转换函数
  14. 第五届新疆省ACM-ICPC程序设计竞赛(重现赛)
  15. 钉钉发布会发了个“ / ”,还说这玩意能替我们上班?
  16. 解决RuntimeError: stack expects a non-empty Tensorlist问题
  17. 6T SRAM的基本结构及其读写操作
  18. HTML前台分页样例
  19. 正确区分二维动画和三维动画的区别!
  20. 一周新闻纵览:法国破获国际黑客软件;YouTube侵犯儿童隐私;换脸软件ZAO修改用户协议

热门文章

  1. 洛谷P1182 数列分段 Section II(二分+贪心)
  2. PicoDet论文译读笔记
  3. 《南溪的目标检测学习笔记》——模型预处理的学习笔记
  4. End-to-end目标检测算法的学习笔记
  5. Youki的装机日记~
  6. 使用MOE进行药效团建模与分析
  7. Git Pull Failed:Could not read from remote repository
  8. zend studio怎么连接mysql?
  9. VMX虚拟机环境下CentOS扩展home磁盘空间
  10. Android的广播接收器BroadcastReceiver