博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode OJ:Maximal Square(最大矩形)
阅读量:7065 次
发布时间:2019-06-28

本文共 1482 字,大约阅读时间需要 4 分钟。

Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area.

For example, given the following matrix:

1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0

在给定的二维字符数组,找出最大全为1的矩形包含的1的个数:

注意这里相当于求面积而已,只要求出边长就很好办了。边长用dp很好求,这题其实跟前面有道dp问题很像,以后有时间找出来,先贴下代码:

1 class Solution { 2 public: 3     int maximalSquare(vector
>& matrix) { 4 if(!matrix.size()||!matrix[0].size()) return 0; 5 vector
>dp(matrix.size(), vector
(matrix[0].size(), 0)); 6 int maxVal = 0; 7 for(int i = 0; i < matrix.size(); ++i){ 8 if(matrix[i][0] == '1'){ 9 dp[i][0] = 1;10 maxVal = 1;11 }else dp[i][0] = 0;12 }13 for(int j = 0; j < matrix[0].size(); ++j){14 if(matrix[0][j] == '1'){15 dp[0][j] = 1; 16 maxVal = 1;17 }else dp[0][j] = 0;18 }19 for(int i = 1; i < matrix.size(); ++i){20 for(int j = 1; j < matrix[0].size(); ++j){21 if(matrix[i][j] == '1'){22 dp[i][j] = min(dp[i-1][j], min(dp[i][j-1], dp[i-1][j-1])) + 1;23 maxVal = max(maxVal, dp[i][j]);24 }else25 dp[i][j] = 0;26 }27 }28 return maxVal*maxVal;29 }30 };

 

转载于:https://www.cnblogs.com/-wang-cheng/p/4975068.html

你可能感兴趣的文章
PC端和移动端测试区别
查看>>
TCP/IP中的四元组、五元组、七元组
查看>>
用代码告诉你“问世间情为何物,直教人生死相许”
查看>>
(PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
查看>>
使用sqlite保存数据返回主键
查看>>
js循环生成多个easyui datagrid数据网格时,初始化表格
查看>>
Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器...
查看>>
获取用户信息
查看>>
洛谷P3952 时间复杂度
查看>>
Leetcode | Parentheses 相关
查看>>
Ajax分页问题
查看>>
如何禁止内部viewPager滑动
查看>>
简单的转义字符
查看>>
RabbitMQ入门-Topic模式
查看>>
poj 2777 Count Color(线段树区间更新)
查看>>
Java数据结构与算法(5) - ch05链表(LinkList)
查看>>
CLR Via CSharp读书笔记(21):自动内存管理(垃圾回收)
查看>>
CentOS 6.5系统上安装SVN服务器端的方法及目录访问权限配置(转总结)
查看>>
MongoDB官方C#驱动中查询条件Query用法
查看>>
链表的销毁与清空(转)
查看>>