c盘清理的步骤是什么(如何清理C盘空间)
如何清理C盘空间怎么清理C盘的垃圾文件?每天上网会给电脑带来很多临时文件,这些垃圾文件不清理掉时间久了就会影响到电脑的运行速度。那怎
2022/12/08
1.简述:
(资料图片仅供参考)
给定一个数组heights,长度为n,height[i]是在第i点的高度,那么height[i]表示的直方图,能够形成的最大矩形是多少?
1.每个直方图宽度都为1
2.直方图都是相邻的
3.如果不能形成矩形,返回0即可
4.保证返回的结果不会超过231-1
数据范围:
如输入[3,4,7,8,1,2],那么如下:
输入:
[3,4,7,8,1,2]
返回值:
14
输入:
[1,7,3,2,4,5,8,2,7]
返回值:
16
2.代码实现:
import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param heights int整型一维数组 * @return int整型 */ public int largestRectangleArea (int[] heights) { //总宽度 int n=heights.length; //新建单调栈 ArrayDequestack=new ArrayDeque<>(); int res=0; for(int i=0;i heights[i]){ //由于单调栈内元素是单调不递减的,L到i-1之间的高度一定大于等于curHeight int curHeight=heights[stack.pop()]; //如果栈中元素为空,说明0到i-1之间的高度均大于等于curHeight int L=stack.isEmpty()?0:stack.peek()+1; res=Math.max(res,(i-L)*curHeight); } stack.push(i); } //如果遍历完之后,单调栈还不为空,则继续统计可能的最大面积 while(!stack.isEmpty()){ int curHeight=heights[stack.pop()]; int L=stack.isEmpty()?0:stack.peek()+1; res=Math.max(res,(n-L)*curHeight); } return res; }}