LeetCode 221. 最大正方形(Maximal Square)
2024-09-04 14:27:34
题目描述
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。
示例:
输入: 1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0 输出: 4
解题思路
动态规划思想,从左上依次遍历到右下,记录以当前位置为右下角顶点的最大正方形的边长,对每个位置作如下操作:
- 若该位置为0,直接跳过
- 若该位置为1,则分为两种情况:
- 若其为左边界或上边界,则更新最大边长为当前数字;
- 否则检查其紧邻左方、紧邻上方和左上角对应的数字,取他们的最小值再加1即为以当前位置为右下角顶点的正方形边长,并更新此时的最大正方形边长
代码
class Solution {
public:
int maximalSquare(vector<vector<char>>& matrix) {
int maxN = ;
for(int i = ; i < matrix.size(); i++){
for(int j = ; j < matrix[].size(); j++){
if(matrix[i][j] == '') continue;
if(j == || i == ){
if(matrix[i][j] - '' > maxN) maxN = matrix[i][j] - '';
}
else if(matrix[i - ][j - ] > ''){
char x = min(matrix[i - ][j - ], matrix[i - ][j]);
x = min(x, matrix[i][j - ]);
matrix[i][j] = x + ;
if(matrix[i][j] - '' > maxN) maxN = matrix[i][j] - '';
}
}
}
return maxN * maxN;
}
};
最新文章
- 转(Response.WriteFile 无法下载大文件解决方法)
- ConCurrent in Practice小记 (1)
- 【转载】为什么V8引擎这么快?
- 15 Best Responsive HTML5 Frameworks 2014
- 【代码笔记】iOS-标题2个图标,点击的时候,页面跳转
- ubutu之Navicat安装
- 详解SpringMVC请求的时候是如何找到正确的Controller[附带源码分析]
- Phalcon 调试应用程序
- 【数据结构&;amp;&;amp;等差数列】KMP简介和算法的实现(c++ &;amp;&;amp; java)
- xdebug.var_display_max_data
- UWP--集合绑定数据
- new/delete和malloc/free的比较
- 字符串匹配的Boyer-Moore(BM)算法
- 喵哈哈村的魔法考试 Round #18 (Div.2) 题解
- 微信小程序制作家庭记账本之一
- FZU Monthly-201901 获奖名单
- C语言位操作--不用中间变量交换两数值
- [ 原创 ]Centos 7.0下启动 Tomcat8.5.15
- font-size对展示的影响
- 一句话讲清URI、URL、URN
热门文章
- 弹性盒模型display:flex
- redis __详解 (转载自作者:孤独烟 出处: http://rjzheng.cnblogs.com/)
- 第五章、Django之多表查询进阶与事务
- Flask+gevent-websocket模块实现websocket
- Linux下的头文件搜索路径
- Djnago模板与标签
- 共享手机网络给电脑(USB连接)
- VS---《在VS2010中 使用C++创建和使用DLL》(003)
- string::copy
- SQL 查询今天、昨天、7天内、30天的数据