Largest rectangle in a histogram: pops, widths and areas ======================================================== heights [2, 1, 5, 6, 2, 3] i=0 height=2: push index 0 stack(top first) = [0] i=1 height=1: pop bar of height 2: left edge index -1, right edge index 0, width 1, area 2 best = 2 push index 1 stack(top first) = [1] i=2 height=5: push index 2 stack(top first) = [2, 1] i=3 height=6: push index 3 stack(top first) = [3, 2, 1] i=4 height=2: pop bar of height 6: left edge index 2, right edge index 3, width 1, area 6 best = 6 pop bar of height 5: left edge index 1, right edge index 3, width 2, area 10 best = 10 push index 4 stack(top first) = [4, 1] i=5 height=3: push index 5 stack(top first) = [5, 4, 1] i=6 (sentinel) height=0: pop bar of height 3: left edge index 4, right edge index 5, width 1, area 3 best = 10 pop bar of height 2: left edge index 1, right edge index 5, width 4, area 8 best = 10 pop bar of height 1: left edge index -1, right edge index 5, width 6, area 6 best = 10 push index 6 stack(top first) = [6] largest rectangle = 10