leetcode题库1314-- 矩阵区域和
给你一个 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-- 矩阵区域和相关推荐
- LeetCode题库第867题 转置矩阵
LeetCode题库第867题 转置矩阵 LeetCode题库第867题 转置矩阵 我首先想到的方法是新建一个二维的矩阵,然后遍历原来的矩阵,将每一个元素放在新矩阵中该放的位置: // javapub ...
- LeetCode题库第888题 公平的糖果棒交换
LeetCode题库第888题 公平的糖果棒交换 LeetCode第888道题 公平的糖果棒交换 首先,题目中说他们两个人的糖果的总数量是不一样的,并且要将A中的一个糖果和B的一个糖果交换后使得他们两 ...
- LeetCode题库第2题 两数相加
两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...
- LeetCode题库第1题 两数之和
两数之和 LeetCode题库第1题 两数之和 看到题,我就想到了暴力法: public int[] force(int[] nums,int target) {for (int i = 0; i & ...
- LeetCode题库整理【Java】—— 3 无重复字符的最长子串
LeetCode题库整理[Java] ## 3 无重复字符的最长子串 题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" ...
- LeetCode题库整理【Java】—— 2 两数相加
LeetCode题库整理[Java] 2.两数相加 题目:给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果, ...
- LeetCode题库整理【Java】—— 7整数反转
LeetCode题库整理[Java] 7.整数反转 题目:给出一个32位的有符号整数,你需要将这个这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例2: 输入: -123 ...
- LeetCode题库整理【Java】—— 1两数之和
LeetCode题库整理[Java] 1.两数之和 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nu ...
- leetcode题库:4.两个排序数组的中位数
题目: /** *leetcode题库:4. 求两个排序数组的中位数 * * 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . * 请找出这两个有序数组的中位数. ...
- LeetCode 题库 全 JAVA 解题---771.宝石与石头
LeetCode 题库 全 JAVA 解题 771.宝石与石头 原题回顾: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥 ...
最新文章
- cocos 射线检测 3D物体 (Sprite3D点击)
- php kint调试,PHP调试助手
- object数据类型
- TLS是如何保障数据传输安全(中间人攻击)
- C#表格文字多收缩样式
- QTP User-Defined Function 学习经验汇总
- javascrip中setTimeout和setInterval
- 阿里云Serverless,全球第一!
- 百度网盘加速教程(绝对有效)
- 32位无符号整数快开方函数
- 计算机电源德国产,德国原装崇拜者来一发?BeQuiet! Straight Power 11全模电源
- ZooZ应用内移动支付解决方案公司获150万美金种子投资
- oracle的日期时间转换日期,oracle 的时间日期转换函数
- 第五届新疆省ACM-ICPC程序设计竞赛(重现赛)
- 钉钉发布会发了个“ / ”,还说这玩意能替我们上班?
- 解决RuntimeError: stack expects a non-empty Tensorlist问题
- 6T SRAM的基本结构及其读写操作
- HTML前台分页样例
- 正确区分二维动画和三维动画的区别!
- 一周新闻纵览:法国破获国际黑客软件;YouTube侵犯儿童隐私;换脸软件ZAO修改用户协议