diff --git a/src/main/java/com/thealgorithms/datastructures/stacks/LargestRectangle.java b/src/main/java/com/thealgorithms/datastructures/stacks/LargestRectangle.java new file mode 100644 index 000000000000..b4a41341f54e --- /dev/null +++ b/src/main/java/com/thealgorithms/datastructures/stacks/LargestRectangle.java @@ -0,0 +1,33 @@ +package com.thealgorithms.datastructures.stacks; + +import java.util.Stack; + +/** + * + * @author mohd rameez github.com/rameez471 + */ + +public class LargestRectangle { + public static String largestRectanglehistogram(int[] heights) { + int n = heights.length, maxArea = 0; + Stack st = new Stack<>(); + for(int i=0;i heights[i]) { + int[] tmp = st.pop(); + maxArea = Math.max(maxArea, tmp[1]*(i - tmp[0])); + start = tmp[0]; + } + st.push(new int[]{start, heights[i]}); + } + while(!st.isEmpty()) { + int[] tmp = st.pop(); + maxArea = Math.max(maxArea, tmp[1]*(n-tmp[0])); + } + return Integer.toString(maxArea); + } + public static void main(String[] args) { + assert largestRectanglehistogram(new int[]{2, 1, 5, 6, 2, 3}).equals("10"); + assert largestRectanglehistogram(new int[]{2, 4}).equals("4"); + } +}