首页 > 其他分享 >二维前缀和

二维前缀和

时间:2024-03-03 15:11:06浏览次数:22  
标签:前缀 r2 int sum 二维 c2 c1 r1

二维前缀和

image

class MatrixSum {
private final int[][] sum;

public MatrixSum(int[][] matrix) {
    int m = matrix.length, n = matrix[0].length;
    sum = new int[m + 1][n + 1]; // 注意:如果 matrix[i][j] 范围很大,需要使用 long
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            sum[i + 1][j + 1] = sum[i + 1][j] + sum[i][j + 1] - sum[i][j] + matrix[i][j];
        }
    }
}

// 返回左上角在 (r1,c1) 右下角在 (r2-1,c2-1) 的子矩阵元素和(类似前缀和的左闭右开)
public int query(int r1, int c1, int r2, int c2) {
    return sum[r2][c2] - sum[r2][c1] - sum[r1][c2] + sum[r1][c1];
}

// 如果你不习惯左闭右开,也可以这样写
// 返回左上角在 (r1,c1) 右下角在 (r2,c2) 的子矩阵元素和
public int query2(int r1, int c1, int r2, int c2) {
    return sum[r2 + 1][c2 + 1] - sum[r2 + 1][c1] - sum[r1][c2 + 1] + sum[r1][c1];
}

}

感谢灵神
作者:灵茶山艾府
链接:https://leetcode.cn/circle/discuss/UUuRex/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:前缀,r2,int,sum,二维,c2,c1,r1
From: https://www.cnblogs.com/zuoyeb/p/18050071

相关文章

  • 2024AcWing蓝桥杯集训·每日一题-前缀和
    1.[AcWing562.壁画]题目描述Thanh想在一面被均分为\(N\)段的墙上画一幅精美的壁画。每段墙面都有一个美观评分,这表示它的美观程度(如果它的上面有画的话)。不幸的是,由于洪水泛滥,墙体开始崩溃,所以他需要加快他的作画进度!每天Thanh可以绘制一段墙体。在第一天,他可以自由的......
  • 二维数组和坐标系的对应关系
    题目链接城堡问题这题需要你在二维数组上建立坐标系,并找出上下作用分别对应\((x,y)\)的变化关系。对应关系----------->y|||\/xCode#include<iostream>#include<cstring>#include<algorithm>#include<queue>usingnamespacestd;constintN=60;typed......
  • 前缀和
    作用在求一串数的Sn-Sm时,降低时间复杂度O(n)为O(1)代码#include<iostream>usingnamespacestd;constintN=100010;intn,m;inta[N],s[N];intmain(){ scanf("%d%d",&n,&m); for(inti=1;i<=n;......
  • 14 CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!)C. Tenzing and Balls(dp+前缀
    思路:dp还是挺明显的,思路可以参考最长上升子序列有点dp的感觉\(f[i]\)表示考虑前\(i\)个数,的最大值当前数有两种删或不删不删:\(f[i]=f[i-1]\);删:\(f[i]=max{f[j-1]+i-j+1}\)这个转移是\(O(n^2)\)的显然时间上来不及考虑优化,第一层循环一定是省不了的考虑优化掉第二层循环......
  • 二维数组传参数
    1array<array<int,5>,5>arr;2for(intii=0;ii<arr.size();ii++)3{4for(intjj=0;jj<arr[ii].size();jj++)5{6arr[ii][jj]=jj*10+ii;7}8}9func(arr);1template<typenameT>2voidfunc(c......
  • 一维差分/前缀和
    算法笔记的第一篇文章前缀和:在做题时,我们经常会遇见这种问题:给你一个长度为\(n\)的序列\(a\),有\(q\)次询问,每次给出一个区间\(\left[L,R\right]\),请输出\(a_l+a_{l+1}+\cdots+a_r\)的和。对于这种问题,最为简单的方式莫过于\(\operatorname{O}(nq)\)暴力了。......
  • 11 .Codeforces Round 891 (Div. 3)E. Power of Points(推公式+前缀和优化)
    E.PowerofPoints题解参考#include<bits/stdc++.h>#defineintlonglong#definerep(i,a,b)for(inti=(a);i<=(b);++i)#definefep(i,a,b)for(inti=(a);i>=(b);--i)#define_for(i,a,b)for(inti=(a);i<(b);++i)#definepii......
  • php 生成小程序二维码
    publicfunctiongenerate($code,$isShow){//构建二维码参数$scene='C='.$code.'&path=green';$params=["scene"=>$scene,'page'=>'pages/log......
  • js调用斑马打印机打印二维码
    斑马打印机打印二维码项目(Web项目)功能中存在生成并打印二维码的功能,需要借助打印机打印出二维码。由于业务需求二维码需要打印在不干胶的材料上并可以进行粘贴,所以借助斑马打印机通过热敏不干胶纸进行打印。需要结合所使用的的斑马打印机的型号,去官网下载相关的浏览器打印插件。(......
  • 差分和前缀和
    蓝桥杯第14届中的一道题所学:题目描述小蓝拥有n×n大小的棋盘,一开始棋盘上全都是白子。小蓝进行了m次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色,黑色棋子变为白色)。请输出所有操作做完后棋盘上每个棋子的颜色。输入格式输入的第一行包......