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

代码随想录算法刷题训练营day49:LeetCode(42)接雨水、LeetCode(84)柱状图中最大的矩形

代码随想录算法刷题训练营day49:LeetCode(42)接雨水、LeetCode(84)柱状图中最大的矩形

LeetCode(42)接雨水
题目
在这里插入图片描述

代码

import java.util.Stack;class Solution {public int trap(int[] height) {//用单调栈进行操作int sum=0;Stack<Integer> stack=new Stack<>();for(int i=0;i<height.length;i++){if(stack.isEmpty()){stack.push(i);}else{while(!stack.isEmpty()&&height[i]>height[stack.peek()]){int maxRight=i;int middle=stack.peek();stack.pop();if(!stack.isEmpty()){int maxLeft=stack.peek();//计算面积int tempHeight=0;if(height[maxRight]>height[maxLeft]){tempHeight=height[maxLeft];    }else{tempHeight=height[maxRight];}sum=sum+(tempHeight-height[middle])*(maxRight-maxLeft-1);//这里是减1}}stack.push(i);}}return sum;}
}

LeetCode(84)柱状图中最大的矩形
题目
在这里插入图片描述

代码

import java.util.Stack;class Solution {public int largestRectangleArea(int[] heights) {int maxArea=0;//最大面积,单调递减栈+首尾得增加两个0int[] dateHeight=new int[heights.length+2];dateHeight[0]=0;dateHeight[dateHeight.length-1]=0;for(int i=0;i<heights.length;i++){dateHeight[i+1]=heights[i];}Stack<Integer> stack=new Stack<>();//单调递减栈for(int i=0;i<dateHeight.length;i++){if(stack.isEmpty()){stack.push(i);}else{while (!stack.isEmpty()&&dateHeight[i]<dateHeight[stack.peek()]) {int rightMin=i;int mid=stack.peek();stack.pop();if(!stack.isEmpty()){int leftMin=stack.peek();if((rightMin-leftMin-1)*dateHeight[mid]>maxArea){maxArea=(rightMin-leftMin-1)*dateHeight[mid];}}}stack.push(i);}}return maxArea;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Less 教程:从入门到精通
  • Golang | Leetcode Golang题解之第329题矩阵中的最长递增路径
  • 如何有效构建企业微信私域流量池并提升用户粘性?
  • LinuxC++(10):调用可执行程序
  • 【实现100个unity特效之16】unity2022之前或者之后版本实现全屏shader graph的不同方式 —— 适用于人物受伤红屏或者一些其他状态效果
  • 2024年8月8日(python基础)
  • 开源应用:AI监测如何成为社会安全的智能盾牌
  • 【Week-G7】Semi-Supervised GAN 实践,使用MNIST数据集
  • Oracle DBA常用 sql
  • AI时代,我们还可以做什么?
  • android系统中data下的xml乱码无法查看问题剖析及解决方法
  • C++ 11 for 循环和容器
  • Linux安全与高级应用(七)深入Linux Shell脚本编程:循环与分支结构的高级应用
  • 【算法】装箱问题
  • Apache Kylin分布式的分析数据仓库
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 10个确保微服务与容器安全的最佳实践
  • Angular 4.x 动态创建组件
  • hadoop集群管理系统搭建规划说明
  • java第三方包学习之lombok
  • Laravel Telescope:优雅的应用调试工具
  • leetcode386. Lexicographical Numbers
  • MYSQL 的 IF 函数
  • Python学习之路16-使用API
  • 第十八天-企业应用架构模式-基本模式
  • 订阅Forge Viewer所有的事件
  • 给第三方使用接口的 URL 签名实现
  • 利用DataURL技术在网页上显示图片
  • 如何正确配置 Ubuntu 14.04 服务器?
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 湖北分布式智能数据采集方法有哪些?
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​业务双活的数据切换思路设计(下)
  • ​油烟净化器电源安全,保障健康餐饮生活
  • ‌JavaScript 数据类型转换
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • # 职场生活之道:善于团结
  • (1)bark-ml
  • (1)无线电失控保护(二)
  • (4.10~4.16)
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (黑马C++)L06 重载与继承
  • (七)Knockout 创建自定义绑定
  • (十六)视图变换 正交投影 透视投影
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)Docker基本介绍
  • (自用)网络编程
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ****三次握手和四次挥手
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET Compact Framework 多线程环境下的UI异步刷新