leetcode-1074. 元素和为目标值的子矩阵数量(前缀和+hash)

leetcode-1074. 元素和为目标值的子矩阵数量(前缀和+hash)给出矩阵 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,1],

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给出矩阵 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,1],[0,1,0]], target = 0
输出:4
解释:四个只含 0 的 1x1 子矩阵。
示例 2:

输入:matrix = [[1,-1],[-1,1]], target = 0
输出:5
解释:两个 1x2 子矩阵,加上两个 2x1 子矩阵,再加上一个 2x2 子矩阵。
示例 3:

输入:matrix = [[904]], target = 0
输出:0
 

提示:

1 <= matrix.length <= 100
1 <= matrix[0].length <= 100
-1000 <= matrix[i] <= 1000
-10^8 <= target <= 10^8
class Solution { 
   
public:
    void re(vector<int> &a){ 
   
        for(auto &w : a)w = 0;
    }
    int numSubmatrixSumTarget(vector<vector<int>>& matrix, int target) { 
   
        int n = matrix.size(),m = matrix[0].size();
        vector<int>cols(m,0);
        unordered_map<int,int>mm;
        int ans = 0;
        vector<int>s(m + 1,0);
        for(int i = 0;i < n;i ++){ 
   
            re(cols);
            re(s);
            for(int j = i;j < n;j ++){ 
   
                mm.clear();
                mm[0] = 1;
                for(int k = 1;k <= m;k ++){ 
   
                    cols[k - 1] += matrix[j][k - 1];
                    s[k] = s[k - 1] + cols[k - 1];
                }
                for(int k = 1;k <= m;k ++){ 
   
                    ans += mm[s[k] - target];
                    if(!mm.count(s[k]))mm[s[k]] = 0;
                    mm[s[k]] ++;
                }
            }
        }
        return ans;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169063.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月11日 下午6:46
下一篇 2022年8月11日 下午7:00


相关推荐

  • JSTL中taglib uri=””prefix=””的使用

    JSTL中taglib uri=””prefix=””的使用nbsp nbsp nbsp nbsp 在早期的 jsp 开发中 是使用 java 代码来控制逻辑和显示的 但这样会给前端开发人员带来些麻烦并且代码的可读性也会降低 为了解决上述情况 标签库被创造出来了 标签库的目的在于让开发人员能像使用 html 标签一样的标签来完成前端的逻辑控制和内容显示 而把那些繁琐 复杂的 java 代码隐藏在背后 返还 jsp 文件的干净整洁 标签库的组成 nbsp nbsp nbsp nbsp nbsp 一个标签库一般由两大部分组成 jar 文件

    2026年3月19日
    2
  • 特殊字符乱码问题

    特殊字符乱码问题1、使用标签建议用(标签可以控制转换特殊字符):<html:textproperty=“instruction”readonly=“true”styleClass=“mylongreadonly”size=“32”/><inputname=“instruction”type=“hidden”value=”<mycim2:writename=“objec…

    2022年6月8日
    65
  • 用Python分析2000款避孕套,得出这些有趣的结论

    用Python分析2000款避孕套,得出这些有趣的结论到现在为止,我们的淘宝教程已经写到了第四篇,前三篇分别是:第一篇:Python模拟登录淘宝,详细讲解如何使用requests库登录淘宝pc端。第二篇:淘宝自动登录2.0,新增Cookies序列化,教大家如何将cookies保存起来。第三篇:Python爬取淘宝商品避孕套,教大家如何爬取淘宝pc端商品信息。今天,我们来看看淘宝系列的第四篇我们在上一篇的时候已经将淘宝数据爬取下来了,…

    2022年5月25日
    53
  • tomcat安装及配置教程(保姆级)

    tomcat安装及配置教程(保姆级)tomcat 保姆级安装教程 Tomcat 安装教程 以 tomcat 9 0 62 为例 1 下载安装包可以从官网下载安装包 1 从官网下载输入网址进入官网 sshttp tomcat apache org

    2026年3月19日
    2
  • js 图片转换base64 base64转换为file对象

    js 图片转换base64 base64转换为file对象

    2022年4月3日
    54
  • 从源代码到可执行文件

    在理解一个源代码是如何成为可执行文件时,我简单的回顾下硬件层面、操作系统层面的知识。开机启动一BIOS扫描基本设备,cpu、memory、displayetc,从硬盘启动,读盘面1磁道1扇区1

    2021年12月25日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号