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

给出矩阵 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

解题思路

遍历所有可以可选的上下边界[i,j]。

  1. 在上下界已经确定的情况下,维护前缀和数组cnt[i],代表第i列所有元素的累加和。
  2. 从第一列开始不断累加,累加到cur当中,cur代表上下界确定的情况下,累加起来的前n列
  3. 使用map记录下前n列累加和为k1的情况,当遍历到前n2列时,累加和为k2时,若满足k2-k1=target,即说明子矩阵[n,n2]的和为target。

代码

func numSubmatrixSumTarget(matrix [][]int, target int) (res int) {for i := 0; i < len(matrix); i++ {col := make([]int, len(matrix[0]))for j := i; j < len(matrix); j++ {for z := 0; z < len(matrix[0]); z++ {col[z] += matrix[j][z]}func() {m := make(map[int]int)m[0] = 1cur := 0for i := 0; i < len(matrix[0]); i++ {cur += col[i]i2, has := m[cur-target]if has {res += i2}m[cur]++}}()}}return}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

失物招领php_新奥尔良圣徒队是否增加了失物招领?

失物招领phpOver the past couple of years, the New Orleans Saints’ offense has been criticized for its lack of wide receiver options. Luckily for Saints’ fans like me, this area has been addressed by the signing of Emmanuel Sanders back in March — or has…

教你分分钟使用Retrofit+Rxjava实现网络请求

撸代码之前&#xff0c;先简单了解一下为什么Retrofit这么受大家青睐吧。 Retrofit是Square公司出品的基于OkHttp封装的一套RESTful&#xff08;目前流行的一套api设计的风格&#xff09;网络请求框架。它内部使用了大量的设计模式&#xff0c;以达到高度解耦的目的&#xff1b…

线程与进程区别

一.定义&#xff1a; 进程&#xff08;process&#xff09;是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。 进程中所包含的一个或多个执行单元称为线程&#xff08;thread&#xff09;。进程还拥有一个私有的虚拟地址空间&#xff0c;该空间…

基本SQL命令-您应该知道的数据库查询和语句列表

SQL stands for Structured Query Language. SQL commands are the instructions used to communicate with a database to perform tasks, functions, and queries with data.SQL代表结构化查询语言。 SQL命令是用于与数据库通信以执行任务&#xff0c;功能和数据查询的指令。…

leetcode 5756. 两个数组最小的异或值之和(状态压缩dp)

题目 给你两个整数数组 nums1 和 nums2 &#xff0c;它们长度都为 n 。 两个数组的 异或值之和 为 (nums1[0] XOR nums2[0]) (nums1[1] XOR nums2[1]) … (nums1[n - 1] XOR nums2[n - 1]) &#xff08;下标从 0 开始&#xff09;。 比方说&#xff0c;[1,2,3] 和 [3,2,1…

客户细分模型_Avarto金融解决方案的客户细分和监督学习模型

客户细分模型Lets assume that you are a CEO of a company which have some X amount of customers in a city with 1000 *X population. Analyzing the trends/features of your customer and segmenting the population of the city to land new potential customers would …

用 Go 编写一个简单的 WebSocket 推送服务

用 Go 编写一个简单的 WebSocket 推送服务 本文中代码可以在 github.com/alfred-zhon… 获取。 背景 最近拿到需求要在网页上展示报警信息。以往报警信息都是通过短信&#xff0c;微信和 App 推送给用户的&#xff0c;现在要让登录用户在网页端也能实时接收到报警推送。 依稀记…

leetcode 231. 2 的幂

给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 示例 1&#xff1a; 输入&#xff1a;n 1 输出&#xff1a;tr…

Java概述、环境变量、注释、关键字、标识符、常量

Java语言的特点 有很多小特点&#xff0c;重点有两个开源&#xff0c;跨平台 Java语言是跨平台的 Java语言的平台 JavaSE JavaME--Android JavaEE DK,JRE,JVM的作用及关系(掌握) (1)作用 JVM&#xff1a;保证Java语言跨平台 &#xff0…

写游戏软件要学什么_为什么要写关于您所知道的(或所学到的)的内容

写游戏软件要学什么Im either comfortably retired or unemployed, I havent decided which. What I do know is that I am not yet ready for decades of hard-won knowledge to lie fallow. Still driven to learn new technologies and to develop new projects, I see the …

leetcode 342. 4的幂

给定一个整数&#xff0c;写一个函数来判断它是否是 4 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 整数 n 是 4 的幂次方需满足&#xff1a;存在整数 x 使得 n 4x 示例 1&#xff1a; 输入&#xff1a;n 16 输出&#xff1a;true …

梯度反传_反事实政策梯度解释

梯度反传Among many of its challenges, multi-agent reinforcement learning has one obstacle that is overlooked: “credit assignment.” To explain this concept, let’s first take a look at an example…在许多挑战中&#xff0c;多主体强化学习有一个被忽略的障碍&a…

三款功能强大代码比较工具Beyond compare、DiffMerge、WinMerge

我们经常会遇到需要比较同一文件的不同版本&#xff0c;特别是代码文件。如果人工去对比查看&#xff0c;势必费时实力还会出现纰漏和错误&#xff0c;因此我们需要借助一些代码比较的工具来自动完成这些工作。这里介绍3款比较流行且功能强大的工具。 1. Beyond compare这是一款…

shell脚本_Shell脚本

shell脚本In the command line, a shell script is an executable file that contains a set of instructions that the shell will execute. Its main purpose is to reduce a set of instructions (or commands) in just one file. Also it can handle some logic because it…

大数据与Hadoop

大数据的定义 大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。 大数据的概念–4VXV 1,数据量大&#xff08;Volume&#xff09;2,类型繁多&#xff08;Variety &#xff09;3,速度快时效高&#xff08;Velocity&#xff09;4,价值密度低…

Arm汇编指令学习

ARM指令格式 ARM指令格式解析 opcode: 指令助记符,例如,MOV ,ADD,SUB等等 cond&#xff1a;指令条件码表.下面附一张图 {S}:是否影响CPSR的值. {.W .N}:指令宽度说明符,无论是ARM代码还是Thumb&#xff08;armv6t2或更高版本&#xff09;代码都可以在其中使用.W宽度说明符&…

facebook.com_如何降低电子商务的Facebook CPM

facebook.comWith the 2020 election looming, Facebook advertisers and e-commerce stores are going to continually see their ad costs go up as the date gets closer (if they haven’t already).随着2020年选举的临近&#xff0c;随着日期越来越近&#xff0c;Facebook…

Python中的If,Elif和Else语句

如果Elif Else声明 (If Elif Else Statements) The if/elif/else structure is a common way to control the flow of a program, allowing you to execute specific blocks of code depending on the value of some data.if / elif / else结构是控制程序流程的常用方法&#x…

Hadoop安装及配置

Hadoop的三种运行模式 单机模式&#xff08;Standalone,独立或本地模式&#xff09;:安装简单,运行时只启动单个进程,仅调试用途&#xff1b;伪分布模式&#xff08;Pseudo-Distributed&#xff09;:在单节点上同时启动namenode、datanode、secondarynamenode、resourcemanage…

漏洞发布平台-安百科技

一个不错的漏洞发布平台&#xff1a;https://vul.anbai.com/ 转载于:https://blog.51cto.com/antivirusjo/2093758