304. 二维区域和检索 - 矩阵不可变 (二维前缀和)

304. 二维区域和检索 - 矩阵不可变 - 力扣(LeetCode)

根据原始数组martix,维护一个a数组作为二维前缀和,然后通过sunRegion函数的公式可以求出左上坐标(row1,col1)右下坐标(row2,col2)的矩阵中 元素的总和

复制代码
class NumMatrix {
    private int[][] a;
    public NumMatrix(int[][] matrix) {
        int x = matrix.length;
        int y = matrix[0].length;
        a = new int[matrix.length+1][matrix[0].length+1];
        for(int i=1;i<=x;++i){
            for(int j=1;j<=y;++j){
                a[i][j] = matrix[i-1][j-1] + a[i-1][j]+a[i][j-1]-a[i-1][j-1];
            }
        }
    }
    
    public int sumRegion(int row1, int col1, int row2, int col2) {
        return a[row2+1][col2+1] - a[row2+1][col1]-a[row1][col2+1] + a[row1][col1];
    }
}

/**
 * Your NumMatrix object will be instantiated and called as such:
 * NumMatrix obj = new NumMatrix(matrix);
 * int param_1 = obj.sumRegion(row1,col1,row2,col2);
 */
复制代码

 

posted @   小草今天又在摸鱼吗  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示