package LeetCode_84
/**
* 84. Largest Rectangle in Histogram
* https://leetcode.com/problems/largest-rectangle-in-histogram/description/
*
* Given n non-negative integers representing the histogram's bar height where the width of each bar is 1,
* find the area of largest rectangle in the histogram.
* */
class Solution {
/*
*solution 1: brute force, Time complexity:O(n^2), Space complexity:O(1)
* */
fun largestRectangleArea(heights: IntArray): Int {
var res = 0
val n = heights.size
for (i in 0 until n) {
var minH = heights[i]
//keep tracking it left hand side, find out the minimum height to calculate area
for (j in i downTo 0) {
minH = Math.min(minH, heights[j])
//area = width * min_height
val area = minH * (i - j + 1)
res = Math.max(area, res)
}
}
return res
}
}