Java实现:LeetCode元素和为目标值的子矩阵数量

第十二届蓝桥杯(2021年)模拟赛 Python组(第三期) 题目+个人解答 填空题 填空题-1 【问题描述】   ASCII 码将每个字符对应到一个数值(编码),用于信息的表示和传输。在 ASCII 码中,英文字母是按从小到大的顺序依次编码的,例如:字母 A 编码是 65, 字母 B 编码是 66,字母 C 编码是 67,请问字母 Q 编码是多少?    【答案提交】   这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 【答案】 81 【代码】 print(ord('Q')) # ord():把AS 阅读详情
  • 题目:
  • 代码:
  • public class text{
    
        public static void main(String[] args) {
            int[][] matrix={{1,-1},{-1,1}};
            int target=0;
    
            int num = numSubmatrixSumTarget(matrix, target);
            System.out.println(num);
        }
    
        public static int numSubmatrixSumTarget(int[][] matrix, int target) {
            //矩阵的行数
            int m = matrix.length;
            //矩阵的列数
            int n = matrix[0].length;
    
            int[] temp = new int[m];
            //计数器
            int ans=0;
    
            for (int left = 0;left<n;left++) {
                //fill(): 将指定的int值分配给指定的int数组的每个元素
                Arrays.fill(temp,0);
                for (int right=left;right<n;right++) {
                    for (int i=0;i<m;i++) {
                        //按列存储每行的和
                        temp[i]+=matrix[i][right];
                    }
                    //将存储了每一列的和的数组,进行函数调用
                    ans+= subCount(temp,target);
                }
            }
            return ans;
        }
    
        private static int subCount(int[] temp,int target) {
            HashMap<Integer, Integer> prevSum = new HashMap<>();
    
            //计数器
            int res = 0;
            int currentSum = 0;
    
            for (int t : temp) {
    
                currentSum += t;
                if (currentSum == target) {
                    res++;
                }
                //containsKey(): 如果此映射包含指定键的映射,则返回 true
                if (prevSum.containsKey(currentSum - target)) {
                    res += prevSum.get(currentSum - target);
                }
                //merge(): 如果指定的键尚未与值相关联或与null相关联,则将其与给定的非空值相关联
                //如果这个key存在,那么将这个key的值与方法中的value相加,否则相当于调用了put方法
                prevSum.merge(currentSum, 1, (a, b) -> a + b);
            }
    
            return res;
        }
    
  • 实例:
LeetCode 3070:二维前缀和与滑动窗口优化子矩阵统计 前缀和是一种常见的数据预处理技术,通过构建前缀和数组可以在O(1)时间内快速计算任意区间的元素和。在二维情况下,前缀和扩展为二维前缀和矩阵,能够高效处理子矩阵求和问题。结合滑动窗口技巧,可以进一步优化算法时间复杂度,从O(m²n²)降至O(m²n)。这种优化方法在图像处理、数据分析和统计计算等场景中有重要应用价值,特别是处理大规模矩阵数据时效果显著。以LeetCode 3070题为例,通过二维前缀和与滑动窗口的组合应用,能有效统计所有元素和小于等于k的子矩阵数量。 阅读详情

相关推荐

【前端HTML生成条形码——MQ】

本文将展示前端HTML如何根据用户输入内容生成对应的条形码,附HTML和JS代码。代码如下(示例):

weixin_42588676的博客 1955

leetcode 剑指 Offer II 013. 二维子矩阵的和

然后,它创建一个二维数组sums,其中sums[i][j]表示矩阵中左上角为(0, 0),右下角为(i-1, j-1)的子矩阵的元素总和。int sumRegion(int row1, int col1, int row2, int col2) 返回左上角 (row1, col1) 、右下角 (row2, col2) 的子矩阵的元素总和。计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。时间复杂度(O(n^2))时间复杂度(O(n^2))

dengjiayue的博客 474

全球、中国各省市县等行政区划(含十段线)shape及geosjon数据免费下载

免费下载全球、中国各省市县等行政区划(含十段线)shape及geosjon数据

mhf403445651的博客 3458

leetcode/子矩阵元素和

二维前缀和。

求道问术 498

AIR780E二次开发点灯(LuatOS)

Air780E的LuatOS点灯教程,二次开发教程,可用于所有ec618平台,无需SDK

rootuseres的博客 1万+

智慧矿山无人机空地一体化解决方案

未来,随着技术的不断进步和应用场景的不断拓展,智慧矿山无人机空地一体化解决方案将在矿业领域发挥更加重要的作用,为矿山的可持续发展提供更加有力的保障。该系统能够实现矿山的全方位、全天候监测与管理,提升矿山生产效率,降低安全风险,并为矿山的可持续发展提供有力支持。智慧矿山无人机空地一体化解决方案是当前矿业领域技术创新的重要方向,旨在通过集成无人机技术、物联网、大数据、人工智能等先进技术,实现矿山的智能化、高效化和安全化运营。在矿山爆破、挖掘等危险作业中,无人机可进行远程监控和指挥,降低人员安全风险。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1109

【leetcode】二维子矩阵的和

前缀和

weixin_44627672的博客 582

超实用!用ChimeraX对AlphaFold 结果可视化(中): 蛋白结构美化篇

而一般需要的背景颜色是无色(白色),有三种方法可以更改背景颜色,这里我们介绍两种方法,第三种在下一小节中讲解。如果想选中蛋白链中的某一结构区域或者某些位点,可以用Ctrl+Shift+鼠标左键,或在软件窗口中点击。在这个窗口中可以对蛋白的主链、侧链、表面等颜色进行修改,只用在。,即可在右下角看到我们蛋白的序列信息,在这里面直接用鼠标选择要选择的结构域。就会有更多的颜色供我们选择,如果有特定的色号还可以在这个界面继续选择。后面的颜色(②),就可以选择想要的任何背景颜色(③)。就可以选择软件推荐的常用颜色。

m0_63153079的博客 5478

JAVA程序设计:元素和为目标值的子矩阵数量(LeetCode:1074)

给出矩阵matrix和目标值target,返回元素总和等于目标值的非空子矩阵的数量。 子矩阵x1, y1, x2, y2是满足 x1 <= x <= x2且y1 <= y <= y2的所有单元matrix[x][y]的集合。 如果(x1, y1, x2, y2) 和(x1', y1', x2', y2')两个子矩阵中部分坐标不同(如:x1 != x1'),那么这两个子矩阵也不同。 示例 1: 输入:matrix = [[0,1,0],[1,1,...

信仰.的博客 492

abaqus wcm插件下载_Abaqus随机短纤维增强复合材料建模插件

文末附Abaqus随机短纤维增强复合材料建模插件下载链接前言短纤维增强复合材料相对于长纤维增强复合材料来说更容易制备,且短纤维的填充性能略有改善,可制造复杂产品,广泛应用于车辆、航空航天、建筑等行业,对短纤维增强复合材料进行细观力学分析,可对其宏观力学性能进行预测、分析破坏机理等。接下来对随机短纤维增强复合材料建模插件进行介绍。NO.1 【算法简介】难点一:此插件核心在于判断生成的纤维是...

weixin_39974882的博客 2832

【DDSCAT——离散偶极近似仿真程序04】参数理解和模型设计

在这一部分,我们开始理解DDSCAT程序设计中的一些参数问题。 承接第二部分内容中的ddscat.par文件,我们来聊一聊偶极子、实际体积、有效半径等关键词。 一、偶极子点阵 手册中说,我们需要设计模型(target/目标),它是有偶极子点阵组成的。偶极子,顾名思义,是由一对电荷组成的,但我们不用设计一对,我们设计一个点就行,...

XD_Yangf的博客 7551

LeetCode—1074. 元素和为目标值的子矩阵数量(Number of ...)[困难]—分析及代码(Java)

LeetCode——1074. 元素和为目标值的子矩阵数量[Number of Submatrices That Sum to Target][困难]——分析及代码[Java]一、题目二、分析及代码1. 转化为一维 + 前缀和 + 哈希表(1)思路(2)代码(3)结果三、其他 一、题目 给出矩阵 matrix 和目标值 target,返回元素总和等于目标值的非空子矩阵的数量。 子矩阵 x1, y1, x2, y2 是满足 x1 <= x <= x

江南土豆的博客 409

【unity游戏开发之InputSystem——01】通过写代码监听InputSystem输入(基于unity6开发介绍)

通过写代码监听InputSystem输入(基于unity6开发介绍)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4889

LeetCode 1074:元素和为目标值的子矩阵数量

给定二维矩阵matrix和目标值target,需统计target。直接枚举所有子矩阵的时间复杂度为O(m²n²)mn为矩阵行列数),无法通过大数据用例,因此需要。

m0_75126572的博客 1013

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

豆包 leetCode 1074.元素和为目标值的子矩阵数量 public int numSubmatrixSumTarget(int[][] matrix, int target)

我直接给你 LeetCode 1074 元素和为目标值的子矩阵数量 的 Java 标准最优解,思路清晰、能直接提交 AC。2. 前缀和 + 哈希表:对这个一维数组求「和为 target 的子数组数量」(经典 LeetCode 560)。给你一个矩阵 matrix 和一个整数 target,返回元素和等于 target 的非空子矩阵数量。1. 二维转一维:固定左右两列,把每一行在 [left, right] 之间的和压成一个一维数组。3. 时间复杂度:O(n²·m),n 为列数,m 为行数。

m0_37843156的博客 48

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LeetCode 1074. 元素和为目标值的子矩阵数量

给出矩阵matrix和目标值target,返回元素总和等于目标值的非空子矩阵的数量。子矩阵是满足且的所有单元的集合。如果和x1!= x1'),那么这两个子矩阵也不同。4四个只含 0 的 1x1 子矩阵。5两个 1x2 子矩阵,加上两个 2x1 子矩阵,再加上一个 2x2 子矩阵。0提示 1。

m0_56090828的博客 1045

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

1074. 元素和为目标值的子矩阵数量

1074. 元素和为目标值的子矩阵数量 1074. 元素和为目标值的子矩阵数量 我的思路 暴力枚举 确定矩形的四个边界:top,bottom,left,righttop, bottom, left, righttop,bottom,left,right, 求该区域内数字的和 sumsumsum,判断 sumsumsum 和 targettargettarget 的关系。 显然,该算法的时间复杂度为:O(n4⋅n2)O(n^4 \cdot n^2)O(n4⋅n2),确定四个边界需要 O(n4)O(n^4)O(

Histranger_的博客 243

Leetcode1074:元素和为目标值的子矩阵数量(困难!前缀和+哈希表)

题目: 给出矩阵 matrix 和目标值 target,返回元素总和等于目标值的非空子矩阵的数量。 思路: 这道题目和363.矩形区域不超过 K 的最大数值和 、560.和为K的子数组、两数之和 == 有类似的地方。可以先去做这些题目再回来解答本题。 这道题目假设有前缀和==知识的储备,可能会想到用二维前缀和来搜索数组。如何实现? 二维前缀和可以通过嵌套三个循环实现。 ...

qq_37297658的博客 283

LeetCode 3070题解:二维前缀和优化子矩阵统计

二维前缀和是处理矩阵区域求和的高效预处理技术,通过构建前缀和数组可在O(1)时间内查询任意子矩阵的和。其核心原理基于动态规划和容斥原理,先计算从原点到各点的累积和,再通过加减运算快速得到目标区域和。这种技术在图像处理、数据分析和金融计算等领域有广泛应用,能显著优化暴力枚举法O(m²n²)的时间复杂度。以LeetCode 3070题为例,该题要求统计所有和不超过k的子矩阵数量,通过二维前缀和预处理结合滑动窗口技巧,可将复杂度优化至O(m²n)。特别在处理大规模数据时,这种优化方法能有效提升计算效率,是算法竞赛

weixin_34268753的博客 468

Leetcode 1277:统计全为1的正方形子矩阵

题目描述 给你一个m * n的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。 示例 1: 输入:matrix = [ [0,1,1,1], [1,1,1,1], [0,1,1,1] ] 输出:15 解释: 边长为 1 的正方形有 10 个。 边长为 2 的正方形有 4 个。 边长为 3 的正方形有 1 个。 正方形的...

weixin_35338624的博客 656

python矩阵每个元素平方_利特代码:1277。计数平方子矩阵与所有子矩阵-Python,LeetCode1277CountSquareSubmatriceswithAllOnesPython...

1277. 统计全为 1 的正方形子矩阵问题描述:给你一个m * n的矩阵,矩阵中的元素不是0就是1,请你统计并返回其中完全由1组成的正方形子矩阵的个数。示例 1:输入:matrix =[[0,1,1,1],[1,1,1,1],[0,1,1,1]]输出:15解释:边长为 1 的正方形有 10 个。边长为 2 的正方形有 4 个。边长为 3 的正方形有 1 个。正方形的总数 = 10 + 4 + 1...

weixin_42518874的博客 643

[dp]leetcode1277: 统计全为 1 的正方形子矩阵(medium)

题目: 1277. 统计全为 1 的正方形子矩阵 题解: 与221. 最大正方形一样的题,不过就是将计算最大边长改为计算最大边长的累加和。 代码如下: class Solution { public: //与221.最大正方形思路是一样的,只不过将计算最大长度改成了计算最大长度的累加和 int countSquares(vector<vector<int>...

algsup 776

A.每日一题:3212. 统计 X 和 Y 频数相等的子矩阵数量

A.每日一题:3212. 统计 X 和 Y 频数相等的子矩阵数量解析

要努力去发光,而不是被照亮~ 303

LeetCode(1277):统计全为 1 的正方形子矩阵 Count Square Submatrices with All Ones(Java)

2019.12.29 LeetCode 从零单刷个人笔记整理(持续更新) github:https://github.com/ChopinXBP/LeetCode-Babel 原地动态规划。 遍历每一个位置ij时,将该位的数值置为从该位起左边的1的总个数,例如对于矩阵 [0,1,1,1], [1,1,1,1], [0,1,1,1] 遍历结束后效果为: [0,1,2,3], ...

NJU_ChopinXBP的博客 808
上一篇: Java实现:LeetCode按列翻转得到最大值等行数
下一篇: Java实现:LeetCode距离相等的条形码
Future_LL
博客等级 码龄9年 215粉丝 255原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值