备战秋招版 --- 第12题:85.最大矩形

cpp 复制代码
class Solution {
public:
    int maximalRectangle(vector<vector<char>>& matrix) {
        int m=matrix.size(), n=matrix[0].size();
        vector<vector<int>> nums(matrix.size(),vector<int>(matrix[0].size()));
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(i==0){
                    nums[i][j]= matrix[i][j]=='1'?1:0;
                }else{
                    nums[i][j]= matrix[i][j]=='1'?nums[i-1][j]+1:0;
                }
            }
        }
        for(int i=0;i<m;i++){
            nums[i].push_back(-1);
        }
        int res=0;
        for(int i=0;i<m;i++){
            stack<int> stk;
            for(int j=0;j<=n;j++){
                while(!stk.empty()&&nums[i][j]<nums[i][stk.top()]){
                    int mid=stk.top(); stk.pop();
                    int left=stk.empty()?-1:stk.top();
                    int right=j;
                    res = max(res, nums[i][mid]*(right-left-1));
                }
                stk.push(j);
            }
        }
        return res;
    }
};
相关推荐
仟濹1 小时前
【C/C++】整数超过多少位时用「高精度」
c语言·c++·算法
DIY机器人工房4 小时前
一个可以检测本机的字节顺序,并对任意数据进行字节顺序的反转操作的代码。
嵌入式硬件·算法·嵌入式·diy机器人工房
杰克尼5 小时前
11. 盛最多水的容器
算法·leetcode·职场和发展
程序员Xu7 小时前
【OD机试题解法笔记】查找接口成功率最优时间段
笔记·算法
技术思考者8 小时前
Leetcode - 反转字符串
数据结构·算法·leetcode
SKYDROID云卓小助手9 小时前
无人设备遥控器之多设备协同技术篇
网络·人工智能·嵌入式硬件·算法·信号处理
熬了夜的程序员9 小时前
【华为机试】34. 在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·华为od·华为·面试·golang
phltxy10 小时前
ArrayList与顺序表
java·算法
小拇指~11 小时前
梯度下降的基本原理
人工智能·算法·计算机视觉
艾莉丝努力练剑11 小时前
【C/C++】类和对象(上):(一)类和结构体,命名规范——两大规范,新的作用域——类域
java·c语言·开发语言·c++·学习·算法