【前缀和】LCR_013_二维区域和检索-矩阵不可变


求解代码

java 复制代码
    private int[][] preSum;

    public NumMatrix(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;

        if(m==0||n==0){
            return;
        }
        preSum = new int[m+1][n+1];


        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                preSum[i][j]=preSum[i-1][j]+preSum[i][j-1]+matrix[i-1][j-1]-preSum[i-1][j-1];
            }
        }
    }
    
    public int sumRegion(int row1, int col1, int row2, int col2) {
        return preSum[row2+1][col2+1]-preSum[row2+1][col1]-preSum[row1][col2+1]+preSum[row1][col1];
    }

小贴士

预处理:preSum[i][j] = 上 + 左 + 当前元素 - 重复部分;

查询:区域和 = 整体和 - 左侧和 - 上方和 + 重复和。

相关推荐
香芋Yu3 小时前
【机器学习教程】第03章:SVD与矩阵分解
笔记·机器学习·矩阵
香芋Yu5 小时前
【机器学习教程】第02章:线性代数基础【上】
笔记·线性代数·机器学习
矢志航天的阿洪21 小时前
IGRF-13 数学细节与公式说明
线性代数·机器学习·矩阵
人机与认知实验室1 天前
人机环境系统矩阵的“秩”
线性代数·矩阵
闪电麦坤951 天前
Leecode热题100:矩阵置零(矩阵)
线性代数·算法·矩阵
人机与认知实验室1 天前
人机环境系统矩阵典型案例分析
线性代数·矩阵
山楂树の1 天前
计算机图形学 模型矩阵的逆矩阵:如何从“世界”回归“局部”?
线性代数·矩阵·回归
量子炒饭大师1 天前
【C++入门】数字算子重构的共鸣矩阵 ——【运算符重载】怎样让两个自定义对象直接相加、比较或输出? 运算符重载的完整实现指南助你破局!
c++·矩阵·重构·运算符重载
闪电麦坤951 天前
Leecode热题100:螺旋矩阵(矩阵)
线性代数·矩阵