Open In App

Largest Rectangle Area under Histogram using JavaScript | Without using Stacks

Improve
Improve
Like Article
Like
Save
Share
Report

Find the largest rectangular area possible in a given histogram where the largest rectangle can be made of a number of contiguous bars. For simplicity, assume that all bars have the same width and the width is 1 unit.  

For example, consider the following histogram with 7 bars of heights {6, 2, 5, 4, 5, 1, 6}. The largest possible rectangle possible is 12 (see the below figure, the max area rectangle is highlighted in red)

Approach:

  • For every bar ‘x’, we calculate the area with ‘x’ as the smallest bar in the rectangle. We will find the index of the first smaller (smaller than ‘x’) bar on left of ‘x’ and the index of first smaller bar on right of ‘x’. Let us call these indexes as ‘left index’ and ‘right index’ respectively.
  • Multiply ‘x’ with “right_index-left_index-1” and store it in area
  • Return max area

 

Below is the implementation of the above approach.

index.js




<script>
    function getMaxArea(arr, n) {
        var area = 0;
        for (var i = 0; i < n; i++) {
            var left_index;
            var right_index;
  
            for (var j = i; j >= 0; j--) {
                if (arr[j] < arr[i]) {
                    left_index = j;
                    break;
                }
  
            }
            left_index = j;
  
            for (var j = i; j < n; j++) {
                if (arr[j] < arr[i]) {
                    right_index = j;
                    break;
                }
  
            }
            right_index = j;
              
            area = Math.max(area, arr[i] 
                * (right_index - left_index - 1));
        }
        return area;
    }
  
    var array = [6, 2, 5, 4, 5, 1, 6];
    document.write(getMaxArea(array, 5));
</script>


Output:

12

Complexity: We are using linear search to find the minimum value, then the worst-case time complexity of this algorithm becomes O(n^2).



Last Updated : 22 Sep, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads