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

本文共 1339 字,大约阅读时间需要 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 };

 

转载于:https://www.cnblogs.com/jcliBlogger/p/4778231.html

你可能感兴趣的文章
什么是Node.js
查看>>
高通编译
查看>>
MySQL multiple instances on Ubuntu
查看>>
git常用命令整理
查看>>
第四章 数据抽象 ----《C++编程思想》
查看>>
【JSP报错】—— org.apache.jasper.JasperException: Unable to compile class for JSP
查看>>
ThreadLocal 类用法讲解
查看>>
git 获取kbengine 指定tag代码
查看>>
二字节转包长度
查看>>
java对象--特点
查看>>
Cobar使用文档(可用作MySQL大型集群解决方案)
查看>>
新浪微博新兵训练营系列课程——平台RPC框架介绍
查看>>
maven 中执行 ant 脚本
查看>>
Eclipse4.0+CDT+Cygwin+GDB开发环境搭建
查看>>
大数据Spark企业级实战
查看>>
android开发中的一些问题
查看>>
Ibatis自动生成主键
查看>>
Greenrobot-EventBus源码学习(五)
查看>>
Mysql 统计排名(可并列)
查看>>
Android模拟器 —— 夜神模拟器
查看>>