85. Maximal Rectangle - LeetCode Solution


Dynamic Programming Stack

Python Code:

class Solution:
    def maximalRectangle(self, matrix: List[List[str]]) -> int:
        def MHA(heights):
            if len(heights) == 0:
                return 0

            stack = []

            left = []
            right = []

            for i in range(len(heights)):

                while len(stack) != 0 and heights[stack[-1]] >= heights[i]:
                    stack.pop()

                if len(stack) == 0:
                    left.append(0)
                else:
                    left.append(stack[-1] + 1)

                stack.append(i)

            stack = []

            for i in range(len(heights) - 1, -1, -1):
                while len(stack) != 0 and heights[stack[-1]] >= heights[i]:
                    stack.pop()

                if len(stack) == 0:
                    right.append(len(heights) - 1)
                else:
                    right.append(stack[-1] - 1)

                stack.append(i)

            right = right[::-1]


            ans = []

            for i in range(len(right)):
                ans.append((right[i] - left[i] + 1) * heights[i])

            return max(ans)
        
        
        if len(matrix) == 0:
            return 0
        area = []


        x = [0] * len(matrix[0])


        for i in range(len(matrix)):

            for j in range(len(matrix[i])):
                if int(matrix[i][j]) == 0:
                    x[j] = 0
                else:
                    x[j] += int(matrix[i][j])


            area.append(MHA(x))


        print(max(area))
        return max(area)


Comments

Submit
0 Comments
More Questions

72. Edit Distance
563. Binary Tree Tilt
1306. Jump Game III
236. Lowest Common Ancestor of a Binary Tree
790. Domino and Tromino Tiling
878. Nth Magical Number
2099. Find Subsequence of Length K With the Largest Sum
1608A - Find Array
416. Partition Equal Subset Sum
1446. Consecutive Characters
1618A - Polycarp and Sums of Subsequences
1618B - Missing Bigram
938. Range Sum of BST
147. Insertion Sort List
310. Minimum Height Trees
2110. Number of Smooth Descent Periods of a Stock
2109. Adding Spaces to a String
2108. Find First Palindromic String in the Array
394. Decode String
902. Numbers At Most N Given Digit Set
221. Maximal Square
1200. Minimum Absolute Difference
1619B - Squares and Cubes
1619A - Square String
1629B - GCD Arrays
1629A - Download More RAM
1629C - Meximum Array
1629D - Peculiar Movie Preferences
1629E - Grid Xor
1629F1 - Game on Sum (Easy Version)