zoukankan      html  css  js  c++  java
  • Maximal Rectangle LeetCode

    https://leetcode.com/problems/maximal-rectangle/description/

    同学推荐此题。

    不能放main函数。

    数据有可能为空,涨姿势了。。。

    P.S: data in https://github.com/stomakun/LeetCodeTestData

      1 #include <bits/stdc++.h>
      2 using namespace std;
      3 #define ll long long
      4 #define minv 1e-6
      5 #define inf 1e9
      6 #define pi 3.1415926536
      7 #define nl 2.7182818284
      8 const ll mod=1e9+7;//998244353
      9 const int maxn=1e7+10;
     10 
     11 class Solution {
     12 public:
     13     char **str;
     14     int **a,*x,*y,g=0;
     15     vector<vector<char> >::iterator u;
     16     vector<char>::iterator v;
     17     vector<char> w;
     18     int maximalRectangle(vector<vector<char>>& matrix) {
     19         int n,m,i,j,sum;
     20         n=matrix.size();
     21         if (n==0)
     22             m=0;
     23         else
     24             m=matrix[0].size();
     25 
     26         str=new char*[n+1];
     27         for (i=0;i<=n;i++)
     28             str[i]=new char[m+1];
     29 
     30         a=new int*[n+1];
     31         for (i=0;i<=n;i++)
     32             a[i]=new int[m+1];
     33         x=new int[m+1];
     34         y=new int[m+1];
     35         for (u=matrix.begin(),i=1;u!=matrix.end();u++,i++)
     36         {
     37             w=*u;
     38             for (v=w.begin(),j=1;v!=w.end();v++,j++)
     39                 str[i][j]=*v;
     40         }
     41 
     42         for (i=0;i<=n;i++)
     43             a[i][0]=0;
     44         for (j=0;j<=m;j++)
     45             a[0][j]=0;
     46         for (j=1;j<=m;j++)
     47             for (i=1;i<=n;i++)
     48                 a[i][j]=(str[i][j]=='1')?a[i-1][j]+1:0;
     49         sum=0;
     50         for (i=1;i<=n;i++)
     51         {
     52             g=0;
     53             for (j=1;j<=m;j++)
     54                 if (g==0 || a[i][j]>x[g])
     55                 {
     56                     g++;
     57                     x[g]=a[i][j];
     58                     y[g]=j;
     59                 }
     60                 else
     61                 {
     62                     while (g!=0 && a[i][j]<x[g])
     63                         sum=max(sum,(j-y[g])*x[g]),g--;
     64                     if (g==0 || a[i][j]!=x[g])
     65                         g++;
     66                     x[g]=a[i][j];
     67                 }
     68             while (g!=0)
     69                 sum=max(sum,(m+1-y[g])*x[g]),g--;
     70         }
     71         return sum;
     72     }
     73 }sol;
     74 
     75 /*
     76 int main()
     77 {
     78     vector<vector<char>> matrix;
     79     vector<char> ch;
     80     matrix.clear();
     81 
     82 //    ch.clear();
     83 //    ch.push_back('1');
     84 //    ch.push_back('0');
     85 //    ch.push_back('1');
     86 //    ch.push_back('0');
     87 //    ch.push_back('0');
     88 //    matrix.push_back(ch);
     89 //
     90 //    ch.clear();
     91 //    ch.push_back('1');
     92 //    ch.push_back('0');
     93 //    ch.push_back('1');
     94 //    ch.push_back('1');
     95 //    ch.push_back('1');
     96 //    matrix.push_back(ch);
     97 //
     98 //    ch.clear();
     99 //    ch.push_back('1');
    100 //    ch.push_back('1');
    101 //    ch.push_back('1');
    102 //    ch.push_back('1');
    103 //    ch.push_back('1');
    104 //    matrix.push_back(ch);
    105 
    106 //    ch.clear();
    107 //    ch.push_back('1');
    108 //    ch.push_back('0');
    109 //    ch.push_back('0');
    110 //    ch.push_back('1');
    111 //    ch.push_back('0');
    112 //    matrix.push_back(ch);
    113 
    114     cout<<sol.maximalRectangle(matrix);
    115     return 0;
    116 }
    117 */
  • 相关阅读:
    【转】How Google Glass Actually Works
    【转】苹果、微软、Google的下一战:未来智能眼镜
    【转】硅谷创业教父Paul Graham:如何获得创业idea (1)
    【转】解读专利文件:下一代Google Glass将更像“正常”眼镜,通过镜片显示画面
    【转】苹果只是现在,Google才是未来
    【Coding】程序员每天该做的事 ,收藏着
    【Coding】Enterprise Architect 7.0入门教程
    【Linux】Ubuntu下Java编程环境的搭建
    WebPart开发知识 (转)
    用于 SharePoint 开发的 Visual Studio 2010 工具 (转)
  • 原文地址:https://www.cnblogs.com/cmyg/p/9836006.html
Copyright © 2011-2022 走看看