博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Maximal Rectangle
阅读量:5890 次
发布时间:2019-06-19

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

shares a nice solution with explanation using DP. You will be clear of the algorithm after running it on its suggested example:

matrix = [[0, 0, 0, 1, 0, 0, 0],[0, 0, 1, 1, 1, 0, 0],[0, 1, 1, 1, 1, 1, 0]];

The code is rewritten as follows.

1 class Solution { 2 public: 3     int maximalRectangle(vector
>& matrix) { 4 if (matrix.empty()) return 0; 5 const int m = matrix.size(), n = matrix[0].size(); 6 int *left = new int[n](), *right = new int[n](), *height = new int[n](); 7 fill_n(right, n, n); 8 int area = 0; 9 for (int i = 0; i < m; i++) {10 int l = 0, r = n;11 for (int j = 0; j < n; j++)12 height[j] += matrix[i][j] == '1' ? 1 : -height[j];13 for (int j = 0; j < n; j++) {14 if (matrix[i][j] == '1') left[j] = max(left[j], l);15 else left[j] = 0, l = j + 1;16 }17 for (int j = n - 1; j >= 0; j--) {18 if (matrix[i][j] == '1') right[j] = min(right[j], r);19 else right[j] = n, r = j;20 }21 for (int j = 0; j < n; j++)22 area = max(area, (right[j] - left[j]) * height[j]);23 }24 return area;25 }26 };

 

转载地址:http://yiwsx.baihongyu.com/

你可能感兴趣的文章
Linux下的搜索查找命令的详解(locate)
查看>>
MySQL查询优化
查看>>
android app启动过程(转)
查看>>
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
高并发环境下,Redisson实现redis分布式锁
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
【吉光片羽】短信验证
查看>>
gitlab 完整部署实例
查看>>
GNS关于IPS&ASA&PIX&Junos的配置
查看>>
影响企业信息化成败的几点因素
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
struts中的xwork源码下载地址
查看>>
ABP理论学习之仓储
查看>>
我的友情链接
查看>>
CentOS图形界面和命令行切换
查看>>
HTML5通信机制与html5地理信息定位(gps)
查看>>
加快ALTER TABLE 操作速度
查看>>