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

2025年- H37-Lc145 --42. 接雨水(单调栈)--Java版

1.题目描述

在这里插入图片描述

2.思路

(1)方法一:用双指针实现
(2)方法二:用单调栈实现
1)维护一个单调递增的栈,当前遍历的元素和栈顶元素进行比较(要求遍历的元素要大于栈顶元素),否则,就将当前遍历的元素入栈。
2)如果满足了当前遍历的元素大于栈顶元素(也就是中间的mid元素),栈顶元素出栈,接下来mid的右边第一个元素成为栈顶元素。
3)计算容器的高度
4)计算容器的宽度,此处要-1。(比如横坐标是3,4,5。5-3-1=1。这边的1就是凹槽的宽度。
5)最后计算面积。

3.代码实现

import java.util.Arrays;
import java.util.Deque;
import java.util.LinkedList;public class H42 {public int trap(int[] height) {Deque<Integer> dq=new LinkedList<>();int area=0;int n=height.length;int[] ans=new int[n];//存储下标索引for(int i=0;i<n;i++) {while (!dq.isEmpty()&&height[i]>height[dq.peek()]) {//1)维护一个单调递增的栈,当前遍历的元素和栈顶元素进行比较(要求遍历的元素要大于栈顶元素),否则,就将当前遍历的元素入栈。int mid=dq.pop();// 凹槽底部if(dq.isEmpty()) break;//左右寻找比当前元素小的元素。int postIndex=dq.peek(); //赋值给 dq.peek() 弹出之前保存的索引位置。//2)如果满足了当前遍历的元素大于栈顶元素(也就是中间的mid元素),栈顶元素出栈,接下来mid的右边第一个元素成为栈顶元素。//3)计算容器的高度//height[i] 是当前柱子,作为 右边界//height[postIndex] 是栈顶未弹出的元素,作为 左边界int shortHeight=Math.min(height[i],height[postIndex])-height[mid];//4)计算容器的宽度,此处要-1。(比如横坐标是3,4,5。5-3-1=1。这边的1就是凹槽的宽度。int weight=i-postIndex-1;// 5)最后计算面积。if (shortHeight > 0) {area+=shortHeight*weight;}}dq.push(i);}return area;}public static void main(String[] args){H42 test =new H42();int[] height={0,1,0,2,1,0,1,3,2,1,2,1};int res=test.trap(height);System.out.println(res);}
}

相关文章:

  • 01 基本介绍及Pod基础
  • Linux服务器配置深度学习环境(Pytorch+Anaconda极简版)
  • HarmonyOS5云服务技术分享--自有账号对接AGC认证
  • Neon数据库:让Postgres更智能的选择!
  • 新兴技术与安全挑战
  • 分布式序列生成方案 : Redis Incr | 基于Redisson创建自增获取序号,每天更换一个key, key到期时间1天,用于创建订单号、快递单号
  • 《安徽日报》聚焦珈和科技AI创新:智慧虫情测报护航夏粮提质丰产
  • Visual Studio 2022 无法编译.NET 9 项目的原因和解决方法
  • HCIP实验五
  • MD编辑器推荐【Obsidian】含下载安装和实用教程
  • anaconda、miniconda、conda的关系及miniconda安装
  • 使用SQLite Studio导出/导入SQL修复损坏的数据库
  • 【笔记】与PyCharm官方沟通解决开发环境问题
  • 【Java的批量操作】
  • 一洽小程序接入说明
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的社群构建与新型消费迎合策略研究
  • NVM 安装与配置指南
  • 亿级核心表如何优雅扩展字段
  • 【QT】类A接收TCP数据并通过信号通知类B解析
  • 运行在华为云kubernetes应用接入APM服务
  • 钟睒睒:不反对代工,但农夫山泉目前所有产品是无法代工的
  • 三部门印发《2025年深入推进IPv6规模部署和应用工作要点》
  • 设甜蜜打卡点、还能当婚车,上海定制公交车变身“幸福专列”
  • 著名古人类学家高星获推选为国际史前与原史研究院院士
  • 海南乐城管理局原局长贾宁已赴省政协工作,曾从河南跨省任职
  • 央媒聚焦文明交流互鉴中的“上博现象” :跨越山海,抒写自信