最大矩形面积问题 | 豆包MarsCode AI刷题

46 阅读1分钟

`` def solution(n, array):

    stack = []

    max_area = 0

    index = 0

    while index < n:

        # If this bar is higher than the bar at stack top, push it to the stack

        if not stack or array[index] >= array[stack[-1]]:

            stack.append(index)

            index += 1

        else:

            # Pop the top

            top_of_stack = stack.pop()

            # Calculate the area with array[top_of_stack] as the smallest (or minimum height) bar

            area = (array[top_of_stack] *

                    ((index - stack[-1] - 1) if stack else index))

            # Update max area, if needed

            max_area = max(max_area, area)

    # Now pop the remaining bars from stack and calculate area

    while stack:

        top_of_stack = stack.pop()

        area = (array[top_of_stack] *

                ((index - stack[-1] - 1) if stack else index))

        max_area = max(max_area, area)

    return max_area

if name == "main":

    # Add your test cases here

    print(solution(5, [1, 2, 3, 4, 5]) == 9)