LeetCode 85. 최대 사각형

1457 단어 LeetCode
원제목:https://leetcode-cn.com/problems/maximal-rectangle/
 
아이디어:
본 문제는 이전 문제의 변형이다. 조금만 분석해 보면 우리는 각 줄의 각 점에 대해 높이를 추출하는 것이 사실은 기둥 모양의 그림에서 가장 큰 직사각형 면적을 구하는 문제이다.leetcode 84.
구현:
우리는 매 점의 높이를 수조 dp로 기록하는데 dp의 크기는matrix[0]이다.size().그러면 본 줄의 dp는 어떻게 찾습니까?
1. 만약에 matrix[i][j]='0'이면 기둥 모양의 높이가 0이고 dp[j]=0이다.
2. 만약에'1'이면 주상도의 높이는 바로 이전 줄의 주상도 높이 +1, dp[j]=dp[j]+1이다.
그리고 줄마다 최대 사각형 면적을 구하고 마지막으로ans로 모든 줄에서 가장 큰 사각형 면적을 기록하여 되돌려주면 됩니다.
 
코드:
class Solution {
public:
    //84    ,          
    int largestRectangleArea(vector& heights) {
        int n=heights.size();
        vector left(n),right(n,n);
        stack mono_stack;
        mono_stack.push(-1);
        
        for(int i=0;i=heights[i]){
                right[mono_stack.top()]=i;
                mono_stack.pop(); 
            }
            left[i] = mono_stack.top();
            mono_stack.push(i);
        }
        int ans = 0;
        for(int i=0;i>& matrix) {
        if(matrix.size()==0) return 0;
        int n=matrix.size(),m = matrix[0].size();
        int ans=0;
        vector dp(m);

        //     
        for(int i=0;i

좋은 웹페이지 즐겨찾기