【1314. 矩阵区域和】

目录

一、题目描述

二、算法思想

三、代码实现

cpp 复制代码
class Solution {
public:
    vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int k) 
    {

        //先预处理数组
        int n=mat.size();//行
        int m=mat[0].size();//列
        vector<vector<int>> ret(n,vector<int>(m));
        
        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]+mat[i-1][j-1]-dp[i-1][j-1];
            }
        }

        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                int x1=max(0,i-k)+1,y1=max(0,j-k)+1;
                int x2=min(n-1,i+k)+1,y2=min(m-1,j+k)+1;
                ret[i][j]=dp[x2][y2]-dp[x2][y1-1]-dp[x1-1][y2]+dp[x1-1][y1-1];
            }
        }
        return ret;

    }
};
相关推荐
qq_416018723 分钟前
模板错误消息优化
开发语言·c++·算法
We་ct15 分钟前
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置:二分查找实战
前端·算法·leetcode·typescript·二分
Sunshine for you15 分钟前
C++中的对象池模式
开发语言·c++·算法
炽烈小老头22 分钟前
【 每天学习一点算法 2026/03/25】在排序数组中查找元素的第一个和最后一个位置
学习·算法
刀法如飞24 分钟前
AI时代,重温10大经典排序算法的思维
算法·排序算法·ai编程
啊我不会诶28 分钟前
求LCA 倍增法
c++·算法·深度优先
CoderIsArt29 分钟前
编译器构建中涉及的算法
数据库·算法
暮冬-  Gentle°29 分钟前
编译器优化屏障使用
开发语言·c++·算法
云淡风轻~窗明几净33 分钟前
关于TSP的海岸线猜想:SeaLine算法的逐层法(不同于逐点法)
数据结构·算法·动态规划·模拟退火算法
刀法如飞34 分钟前
AI时代,重温10大经典排序算法
算法·排序算法·ai编程