当前位置: 首页 > news >正文

【算法刷题day60】Leetcode:84. 柱状图中最大的矩形

文章目录

    • Leetcode 84. 柱状图中最大的矩形
      • 解题思路
      • 代码
      • 总结

草稿图网站
java的Deque

Leetcode 84. 柱状图中最大的矩形

题目:84. 柱状图中最大的矩形
解析:代码随想录解析

解题思路

反方向接雨水。见上一篇文章

代码

class Solution {public int largestRectangleArea(int[] heights) {int[] newHeights = new int[heights.length+2];System.arraycopy(heights, 0, newHeights, 1, heights.length);int res = 0;Stack<Integer> stack = new Stack<>();stack.push(0);for (int i = 1; i < newHeights.length; i++) {if (newHeights[i] > newHeights[stack.peek()]) stack.push(i);else if (newHeights[i] == newHeights[stack.peek()]) {stack.pop();stack.push(i);} else {while (newHeights[i] < newHeights[stack.peek()]) {int mid = stack.peek();stack.pop();int left = stack.peek();int h = newHeights[mid];int w = i - left - 1;res = Math.max(res, w * h);}stack.push(i);}}return res;}
}//双指针
class Solution {public int largestRectangleArea(int[] heights) {int length = heights.length;int []leftHeight = new int[length];int []rightHeight = new int[length];leftHeight[0] = -1;for (int i = 1; i < length; i++) {int t = i-1;while (t >= 0 && heights[t] >= heights[i])t = leftHeight[t];leftHeight[i] = t;}rightHeight[length-1] = length;for (int i = length-2; i >= 0; i--) {int t = i+1;while (t < length && heights[t] >= heights[i])t = rightHeight[t];rightHeight[i] = t;}int res = 0;for (int i = 0; i < length; i++) {int area = (rightHeight[i] - leftHeight[i] - 1) * heights[i];res = Math.max(res, area);}return res;}
}

总结

暂无

http://www.lryc.cn/news/358004.html

相关文章:

  • ThingsBoard物联网网关在智慧城市数据采集中的应用
  • Java中的打印流PrintStream 和 PrintWriter
  • 【MATLAB源码-第217期】基于matlab的16QAM系统相位偏移估计HOS算法仿真,对比补偿前后的星座图误码率。
  • C# CryptoStream流的详解与示例
  • Kubernetes 之 ReplicaSet
  • 转发和重定向
  • 源码部署ELK
  • 构造+模拟,CF1148C. Crazy Diamond
  • CAD二次开发(2)-将直线对象添加到CAD图形文件
  • 代码随想录二刷 Day05 | 242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和,454.四数相加II,383. 赎金信
  • 2024年四川省三支一扶报名流程图解✅
  • js Dom基础
  • pytest识别测试用例的机制以及和unittest的区别
  • 民国漫画杂志《时代漫画》第17期.PDF
  • [AIGC] Spring Boot 2 自定义 Starter 指南
  • HCIP综合实验命令
  • JS移动端设置mouseover,mouseleave有效么
  • IAR9.30安装和注册相关
  • HTTP Digest Access Authentication Schema
  • MySql超大Sql文件导入效率优化
  • 【leetcode1944--队列中可以看到的人数】
  • 基于51单片机的室内空气质量检测-仿真设计
  • day22二叉树part08 | 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
  • 【Linux】Linux环境基础开发工具_2
  • 长方形边框 上方中间有缺口 css
  • 2024-05-29 架构-程序设计-思考
  • 关于网络的基础知识
  • CTF网络安全大赛简单web题目:eval
  • Linux通过 SSH 使用 rsync 进行文件传输
  • 【保姆级介绍下Foxmail 邮箱】