Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Largest Rectangle in Histogram

Updated
2 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "84" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

Problem Statement

Given an array of integers heights representing the histogram's bar height where the width of each bar is 1, return the area of the largest rectangle in the histogram. Example 1: Input: heights = [2,1,5,6,2,3] Output: 10 Explanation: The above is a histogram where width of each bar is 1. The largest rectangle is shown in the red area, which has an area = 10 units. Example 2: Input: heights = [2,4] Output: 4 Constraints: 1 <= heights.length <= 105 0 <= heights[i] <= 104

Explanation

Here's a solution to find the largest rectangle in a histogram:

  • Key Idea: The core idea is to iterate through each bar and consider it as the minimum height of a potential rectangle. We need to find the leftmost and rightmost bars that are greater than or equal to the current bar's height. This defines the width of the rectangle with the current bar as the minimum height.

  • Stack for Efficiency: A stack is used to efficiently track the indices of increasing heights. When we encounter a bar that's shorter than the bar at the top of the stack, it signals the end of a potential rectangle using the stack top as the smallest bar.

  • Calculate Area: As we pop elements from the stack, we calculate the area of the rectangle they represent, using the stack's contents to determine the width.

  • Complexity: O(N) runtime, O(N) storage.

Code

    def largestRectangleArea(heights):
    """
    Finds the largest rectangular area in a histogram.

    Args:
        heights: A list of integers representing the heights of the histogram bars.

    Returns:
        The area of the largest rectangle.
    """
    stack = []  # Stores indices of increasing heights
    max_area = 0
    n = len(heights)

    for i in range(n):
        while stack and heights[i] < heights[stack[-1]]:
            height = heights[stack.pop()]
            width = i if not stack else i - stack[-1] - 1
            max_area = max(max_area, height * width)

        stack.append(i)

    while stack:
        height = heights[stack.pop()]
        width = n if not stack else n - stack[-1] - 1
        max_area = max(max_area, height * width)

    return max_area

More from this blog

C

Chatmagic blog

2894 posts