1
var largestRectangleArea = function (heights) {2
const n = heights.length;3
const nsr = new Array(n).fill(0);4
const nsl = new Array(n).fill(0);8
for (let i = n - 1; i >= 0; i--) {11
heights[i] <= heights[stack[stack.length - 1]]15
if (stack.length === 0) {18
nsr[i] = stack[stack.length - 1];23
while (stack.length !== 0) {27
for (let i = 0; i < n; i++) {30
heights[i] <= heights[stack[stack.length - 1]]34
if (stack.length === 0) {37
nsl[i] = stack[stack.length - 1];44
for (let i = 0; i < n; i++) {45
ans = Math.max(ans, heights[i] * (nsr[i] - nsl[i] - 1));