标签:right 真题 int max 练习 heights 直方图 2022 矩形
MT4 直方图内最大矩形描述
给定一个数组heights,长度为n,height[i]是在第i点的高度,那么height[i]表示的直方图,能够形成的最大矩形是多少? 1.每个直方图宽度都为1 2.直方图都是相邻的 3.如果不能形成矩形,返回0即可 4.保证返回的结果不会超过231-11 import java.util.*; 2 3 4 public class Solution { 5 /** 6 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 7 * 8 * 9 * @param heights int整型一维数组 10 * @return int整型 11 */ 12 public int largestRectangleArea (int[] heights) { 13 // write code here 14 15 int max=0,n=heights.length; 16 //单调栈 17 for (int i=0;i<n;i++){ 18 int left=i-1,right=i+1; 19 while (left>=0&&heights[left]>=heights[i]) left--; 20 while (right<n&&heights[right]>=heights[i]) right++; 21 max=Math.max(max,(right-left-1)*heights[i]); 22 } 23 return max; 24 } 25 26 27 }
思路:穷举最低的高度,左右寻找可以组合成的最长的矩形。
单调栈做法:加入下标!!! 弹出时更新最大的面积。遍历完之后栈可能不为空,需要更新解。
标签:right,真题,int,max,练习,heights,直方图,2022,矩形 来源: https://www.cnblogs.com/benbicao/p/16343848.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。