LeetCode 1277. 统计全为 1 的正方形子矩阵(DP)

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 = 15.示例 2:
输入:matrix = 
[[1,0,1],[1,1,0],[1,1,0]
]
输出:7
解释:
边长为 1 的正方形有 6 个。 
边长为 2 的正方形有 1 个。
正方形的总数 = 6 + 1 = 7.提示:
1 <= arr.length <= 300
1 <= arr[0].length <= 300
0 <= arr[i][j] <= 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-square-submatrices-with-all-ones
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:
LeetCode 1504. 统计全 1 子矩形(记录左侧的连续1的个数)
LeetCode 5655. 重新排列后的最大子矩阵(前缀和+排序)

  • dp[i][j] 表示 以(i,j)右下角的最大正方形边长
  • 第一行、第一列肯定最大是1(矩阵值为1的话)
  • 其他为 1 位置的最大边长跟它相邻的几块的关系:等于左上方向3个最短的边长+1
  • 正方形的个数等于最大的边长
    在这里插入图片描述
class Solution {
public:int countSquares(vector<vector<int>>& matrix) {int m = matrix.size(), n = matrix[0].size(), i, j, count = 0;vector<vector<int>> dp(m,vector<int>(n,0));//dp[i][j] 表示 以i,j为右下角的最大正方形边长for(i = 0; i < m; ++i){for(j = 0; j < n; ++j){if(i==0 || j==0)dp[i][j] = matrix[i][j];//最多边长1else if(matrix[i][j]==1)dp[i][j] = 1+min(dp[i-1][j],min(dp[i][j-1],dp[i-1][j-1]));count += dp[i][j];}}return count;}
};

另评论区Gremist优化了内存,原地算法

class Solution {
public:int countSquares(vector<vector<int>>& matrix) {int ans = 0;for (int i = 0; i < matrix.size(); i++) {for (int j = 0; j < matrix[0].size(); j++) {if (i && j && matrix[i][j]) {matrix[i][j] += min({matrix[i-1][j-1], matrix[i-1][j], matrix[i][j-1]});}ans += matrix[i][j];}}return ans;}
};

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

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

相关文章

抱抱脸:ChatGPT背后的算法——RLHF | 附12篇RLHF必刷论文

文 | 卖萌酱大家好&#xff0c;我是卖萌酱。前几天&#xff0c;抱抱脸公司&#xff08;HuggingFace&#xff09;发表了一篇博客[1]&#xff0c;详细讲解了ChatGPT背后的技术原理——RLHF。笔者读过之后&#xff0c;觉得讲解的还是蛮清晰的&#xff0c;因此提炼了一下核心脉络&a…

该文件夹包含名称过长且无法放入回收站的项目_微软复活20年前生产力工具PowerToys,填补Win10缺失功能,开源且免费...

贾浩楠 发自 凹非寺量子位 报道 | 公众号 QbitAI微软PowerToys&#xff1f;如果你是 Win95、XP时代的老用户&#xff0c;可能对这个微软个官方工具集很熟悉。它包含了很多实用的系统功能增强小软件&#xff0c;如TweakUI、虚拟桌面工具等等&#xff0c;但微软在XP之后就不再更新…

SQL Server中常用全局变量介绍

在SQL Server中&#xff0c;全局变量是一种特殊类型的变量,服务器将维护这些变量的值。全局变量以前缀开头,不必进行声明,它们属于系统定义的函数。下表就是SQL Server中一些常用的全局变量。    全局变量名称 描述 CONNECTIONS 返回 SQL Server 自上次启动以来尝试的连接…

ChatGPT终于被缝进了搜索引擎…

文&#xff5c;Alex Pine 发自 凹非寺源&#xff5c;量子位见惯了列表式搜索引擎&#xff0c;你有没有想过给它换种画风&#xff1f;有人脑洞大开&#xff0c;把艳惊四座的ChatGPT和必应搜索结合起来&#xff0c;搞出了一个智能搜索引擎&#xff1a;既有ChatGPT式的问答&#x…

LeetCode 1310. 子数组异或查询(前缀异或)

1. 题目 有一个正整数数组 arr&#xff0c;现给你一个对应的查询数组 queries&#xff0c;其中 queries[i] [Li, Ri]。 对于每个查询 i&#xff0c;请你计算从 Li 到 Ri 的 XOR 值&#xff08;即 arr[Li] xor arr[Li1] xor … xor arr[Ri]&#xff09;作为本次查询的结果。 …

python编程书籍1020python编程书籍_从零单排之玩转Python安全编程(II)

转自&#xff1a;http://www.secpulse.com/archives/35893.html都说Python大法好&#xff0c;作为一名合格的安全从业人员&#xff0c;不会几门脚本语言都不好意思说自己是从事安全行业的。而Python是最容易入门且使用最顺手的脚本语言&#xff0c;为了不引起程序员世界大战&am…

[导入][转]sap学习手册二

SAP学习手册二 作者&#xff1a;sunxufeng 有没有调整IDES4.6的中文包参数的步骤呢? 在导入中文包后直接手工修改有关参数,不要用CZ10去修改假定为D盘,路径为D:usrsapC11sysprofileC11_DVEBMGS00_cpa (后面CPA为我的计算机名),用NOTEPAD手动编辑该文件 SAPSYSTEMNAME C11 INS…

近几年车道线检测领域的SOTA论文复现代码数据集

自动驾驶近些年来大火。有读者朋友给我留言说想做自动驾驶&#xff0c;但是不知道怎么切入。今天就给大家分享一个好出文章的自动驾驶研究方向——车道线检测。车道线检测就是将计算机视觉应用到自动驾驶或辅助驾驶&#xff0c;本质上还是目标检测问题。但车道线检测又不同于目…

python多元线性回归实例_利用Python进行数据分析之多元线性回归案例

线性回归模型属于经典的统计学模型&#xff0c;该模型的应用场景是根据已知的变量(自变量)来预测某个连续的数值变量(因变量)。例如&#xff0c;餐厅根据每天的营业数据(包括菜谱价格、就餐人数、预定人数、特价菜折扣等)预测就餐规模或营业额&#xff1b;网站根据访问的历史数…

NTLM

NTLM HTTP认证 过程如下&#xff1a; 1: C --> S GET ... 2: C <-- S 401 Unauthorized WW-Authenticate: NTLM 3: C --> S GET ... Authorization: NTLM <base64-encoded type-1-message> 4: C <-- S 401 Unauthorized WWW-Authenticate: NTLM …

ChatGPT和DALLE-2级联后,输出效果震撼了…

源&#xff5c;机器之心 文&#xff5c;张倩、袁铭怿生成式 AI 正在变革内容的生产方式。在过去的一周&#xff0c;相信大家都被 ChatGPT 刷了屏。这个强大的对话 AI 仅用 5 天时间用户量就突破了 100 万。大家用各种方式测试着它的能力上限&#xff0c;其中一种测试方式就是让…

域用户频繁被锁定怎么解决_Oracle11g用户频繁锁定并且解锁后不允许登录

原因有可能是oracle的密码过期机制导致的&#xff1a;一、由于Oracle中默认在default概要文件中设置了“PASSWORD_LIFE_TIME180天”所导致。解决办法&#xff1a;1、查看用户用的哪种profile策略&#xff0c;一般是default&#xff1a;select username,profile from dba_users;…

LeetCode 1290. 二进制链表转整数

1. 题目 给你一个单链表的引用结点 head。 链表中每个结点的值不是 0 就是 1。 已知此链表是一个整数数字的二进制表示形式。 请你返回该链表所表示数字的 十进制值 。 示例 1&#xff1a; 输入&#xff1a;head [1,0,1] 输出&#xff1a;5 解释&#xff1a;二进制数 (101…

jmeter性能测试报告_用 JMeter 做接口测试的优劣浅析

2018年由软件质量报道做的调查报告表明&#xff0c;受调查的测试人员中约有40.67%的人使用JMeter作为接口测试的自动化测试工具(排在商业化或者开源工具中的第一)&#xff0c;剩下的为Postman(28%)&#xff0c;以及SoapUI(17.33%)。不过值得关注的是另外还有44.13%的采用了自研…

关于Hibernate

Hibernate是对象/关系映射&#xff08;ORM&#xff09;的解决方案。就是将java对象与对象关系映射至关系型数据库中的表格与表格之间的关系。 hibernate各个组件的关系 核心组件&#xff1a; Configuration类&#xff1a;用于读取Hibernian配置文件&#xff0c;并生成Sessio&am…

研究了一堆英语学习软件,发现了一个美国宝藏口语App,国内也能用!

图片来源&#xff1a;爱奇艺《一年一度喜剧大会》最近看《二喜》看到逗逗的这句话&#xff0c;我真的太同感了——一个人不知道做什么的时候&#xff0c;好像总会想到学英语这件事。“英语好”确实可以成为一剂强心针——更好的学业机会和更好的职业选择。《当代国人英语学习调…

jdbctemplate 开启事务_Spring(四):事务管理

事务首先&#xff0c;我们要知道事务是什么构成单一逻辑工作单元的操作集合称为事务事务的ACID特性原子性&#xff1a;不可分割的最小操作单位&#xff0c;要么同时成功&#xff0c;要么同时失败一致性&#xff1a;事务操作前后&#xff0c;数据总量不变隔离性&#xff1a;多个…

LeetCode 58. 最后一个单词的长度

1. 题目 给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s&#xff0c;返回其最后一个单词的长度。 如果字符串从左向右滚动显示&#xff0c;那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词&#xff0c;请返回 0 。 说明&#xff1a;一个单词是指仅由字母组…

prompt终于在机器人领域杀疯了

编&#xff5c;杜伟、陈萍源&#xff5c;机器之心谷歌机器人团队等在机器人领域构建了一个多任务 transformer 模型&#xff0c;显著改进了对新任务、环境和对象的零样本泛化。我们知道&#xff0c;机器学习&#xff08;ML&#xff09;多个子领域&#xff08;如 NLP 和 CV&…

python打开excel数据库_使用python导入excel文件中的mssql数据库数据

我试图用python导入excel文件中的mssql数据库数据。我的数据在excel表格中的顺序不正确。e、 g它显示第1列数据&#xff0c;然后是第3列&#xff0c;第2列&#xff0c;然后是第4列&#xff0c;依此类推。我使用以下脚本&#xff1a;import pyodbcimport csvconnection pyodbc.…