首页 > 图灵资讯 > 技术篇>正文

LeetCode面试题:柱状图中最大的矩形

2023-04-23 09:29:56

  1.简述:

  给定 n 非负整数用于表示柱状图中各柱的高度。每根柱子相邻,宽度为 1 。

  在柱状图中,可以勾勒出矩形的最大面积。

  示例 1:

  输入:heights = [2,5,6,2,3]

  输出:10

  解释:图中最大的矩形为红色区域,面积为 10

  示例 2:

  输入: heights = [2,4]

  输出: 4

  2.实现代码:class Solution { public int largestRectangleArea(int[] heights) { int n = heights.length; int[] left = new int[n]; int[] right = new int[n]; Deque mono_stack = new ArrayDeque(); for (int i = 0; i < n; ++i) { while (!mono_stack.isEmpty() && heights[mono_stack.peek()] >= heights[i]) { mono_stack.pop(); } left[i] = (mono_stack.isEmpty() ? -1 : mono_stack.peek()); mono_stack.push(i); } mono_stack.clear(); for (int i = n - 1; i >= 0; --i) { while (!mono_stack.isEmpty() && heights[mono_stack.peek()] >= heights[i]) { mono_stack.pop(); } right[i] = (mono_stack.isEmpty() ? n : mono_stack.peek()); mono_stack.push(i); } int ans = 0; for (int i = 0; i < n; ++i) { ans = Math.max(ans, (right[i] - left[i] - 1) * heights[i]); } return ans; }}

上一篇 浅谈Intl.NumberFormat
下一篇 LeetCode程序员面试金典:搜索旋转排序数组

文章素材均来源于网络,如有侵权,请联系管理员删除。