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

【Hot100】LeetCode—84. 柱状图中最大的矩形

目录

  • 1- 思路
    • 题目识别
    • 单调栈
  • 2- 实现
    • 84. 柱状图中最大的矩形——题解思路
  • 3- ACM 实现


  • 原题链接:84. 柱状图中最大的矩形

1- 思路

题目识别

  • 识别1 :给定一个数组 heights ,求解柱状图的最大面积

单调栈

  • 使用 Stack 来实现,遍历数组,存入下标。
  • 本题实现的是一个单调递减栈,目标是找一个以当前为基准,左边第一个比这个小的以及右边第一个比该元素小的元素。

2- 实现

84. 柱状图中最大的矩形——题解思路

在这里插入图片描述

class Solution {public int largestRectangleArea(int[] heights) {int len = heights.length;int[] newH = new int[len+2];int index = 1;for(int i = 0 ; i < len;i++){newH[index++] = heights[i];}heights = newH;len = heights.length;Stack<Integer> st = new Stack<>();int res = 0;st.push(0);// 单调栈for(int i = 0 ; i < len;i++){if(heights[i] >= heights[st.peek()]){st.push(i);}else{while(heights[i] < heights[st.peek()]){int mid = st.peek();st.pop();int left = st.peek();int right = i;int h = heights[mid];int width = right-left-1;res = Math.max(res,h*width);}st.push(i);}}return res;}
}

3- ACM 实现

public class maxArea {public static int maxA(int[] heights){int len = heights.length;int[] newH = new int[len+2];int index = 1;for(int i = 1 ; i < len;i++){newH[index++] = heights[i];}heights = newH;len = heights.length;Stack<Integer> st = new Stack<>();int res = 0;st.push(0);// 单调栈for(int i = 0 ; i < len;i++){if(heights[i] >= heights[st.peek()]){st.push(i);}else{while(heights[i] < heights[st.peek()]){int mid = st.peek();st.pop();int left = st.peek();int right = i;int h = heights[mid];int width = right-left-1;res = Math.max(res,h*width);}st.push(i);}}return res;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();input = input.replace("[","").replace("]","");String[] parts = input.split(",");int[] nums = new int[parts.length];for(int i = 0 ; i < nums.length;i++){nums[i] = Integer.parseInt(parts[i]);}System.out.println("结果是"+maxA(nums));}
}

http://www.mrgr.cn/news/28141.html

相关文章:

  • 多轮对话中让AI保持长期记忆的8种优化方式篇
  • 【项目管理】MobaXterm终端工具(怎么连接服务器)
  • 安装一键式重置密码插件(Linux)-CloudResetPwdAgent
  • 图形几何之美系列:法向量计算之轮廓有向面积辅助法
  • WPF下播放Rtmp的解决方案
  • 【含开题报告+文档+PPT+源码】基于Spring Boot智能综合交通出行管理平台的设计与实现
  • 高等数学 2.4 隐函数及由参数方程确定的函数的导数
  • C# 异步编程场景
  • 鸿蒙开发之ArkTS 基础五 箭头函数
  • 信息安全工程师(5)域名与域名解析
  • 力扣周赛:第415场周赛
  • python的数据类型详解
  • Java企业面试题3
  • 基于是springboot小区物业管理系统
  • JAVA基础:线程优先级和精灵线程
  • 【演化博弈论】:双方演化博弈的原理与过程
  • java数据结构----图
  • 【Kubernetes】常见面试题汇总(十九)
  • C++第五十一弹---IO流实战:高效文件读写与格式化输出
  • 数据结构之基数排序简介与举例
  • 图像增强技术分析
  • aspcms webshell漏洞复现
  • 卡拉兹(Callatz)猜想也叫(3n+1)猜想
  • 【数据结构】排序算法---希尔排序
  • 第T11周:优化器对比实验
  • Vue基础