A.每日一题——2536. 子矩阵元素加 1

题目链接:2536. 子矩阵元素加 1(中等)

算法原理:

解法:前缀和+二维差分数组

击败74.85%

时间复杂度O(N²)

一维和二维的差分数组笔记如下👇

差分算法演示动画(博主就是在这里学习到的🌹)

Java代码:

java 复制代码
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 王洋
 * Date: 2025-11-14
 * Time: 10:58
 */
class Solution {
    //2536. 子矩阵元素加 1
    //自己第一次的正确但超时的代码
    public int[][] rangeAddQueries(int n, int[][] queries) {
        int[][] ret=new int[n][n];
        for(int k=0;k<queries.length;k++){
            int x1=queries[k][0],y1=queries[k][1],
                    x2=queries[k][2],y2=queries[k][3];
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                    if(x1<=i&&i<=x2&&y1<=j&&j<=y2)
                        ret[i][j]++;
        }
        return ret;
    }

    //研究了三四个小时,新学到了前缀和算法中的差分数组算法
    //第一个for循环可以换成for-each循环,一样的
    public int[][] rangeAddQueries2(int n, int[][] queries) {
        int[][] diff=new int[n+1][n+1];
        for(int k=0;k<queries.length;k++){
            int x1=queries[k][0],y1=queries[k][1],
                    x2=queries[k][2],y2=queries[k][3];
            diff[x1][y1]+=1;
            diff[x2+1][y2+1]+=1;
            diff[x1][y2+1]-=1;
            diff[x2+1][y1]-=1;
        }
        int[][] mat=new int[n][n];
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                //计算三个区域的前缀和
                int k1=(i==0?0:mat[i-1][j]);//计算(A+B区域)
                int k2=(j==0?0:mat[i][j-1]);//计算(A+C区域)
                int k3=(i==0||j==0)?0:mat[i-1][j-1];//计算A区域
                mat[i][j]=diff[i][j]+k1+k2-k3;
            }
        }
        return mat;
    }
}
相关推荐
程序员黑豆3 小时前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
GreenTea4 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
风流 少年4 小时前
Spring AI 2.0:Memory
java·后端·spring
码匠许师傅4 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
小席是个热心肠5 小时前
AI相关的自我学习
java·人工智能·学习
fqq35 小时前
力扣刷题前置Java语法
算法·leetcode·职场和发展
数智化管理手记7 小时前
海量数据如何沉淀有效数据资产?数据标准化治理方案如何搭建?
java·大数据·人工智能
半夏微凉半夏殇7 小时前
x11与weston对比,优先选哪个
leetcode·均值算法·eclipse
2501_906565127 小时前
数学之美探究
算法
oier_Asad.Chen7 小时前
【洛谷题解/AcWing题解/OI学习笔记】洛谷P2868【USACO07DEC】Sightseeing Cows G(01分数规划求最大比率)
算法·图论·spfa·二分·负环