Skip to content

Instantly share code, notes, and snippets.

@linfongi
Created May 26, 2016 05:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save linfongi/ab78bb58ee797b9c09344a48688223f0 to your computer and use it in GitHub Desktop.
Save linfongi/ab78bb58ee797b9c09344a48688223f0 to your computer and use it in GitHub Desktop.
/**
* @param {number[]} heights
* @return {number}
*/
function largestRectangleArea(heights) {
heights.push(-1);
var stack = [];
var max = 0;
heights.forEach((h, i) => {
if (!stack.length || heights[stack.slice(-1)[0]] < h) {
return stack.push(i);
}
while (stack.length && heights[stack.slice(-1)[0]] >= h) {
var height = heights[stack.pop()];
var left = stack.length ? stack.slice(-1)[0] + 1 : 0;
max = Math.max(max, height * (i - 1 - left + 1));
}
stack.push(i);
});
return max;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment