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

[Java][Leetcode hard] 42. 接雨水

没做出来看的官解。1. 动态规划的思想当位于i处i处能接水的体积左侧最高点和右侧最高点的最小值水桶原理-自身的高度classSolution{publicinttrap(int[]height){intsum0;intnheight.length;int[]leftMaxnewint[n];leftMax[0]height[0];for(inti1;in;i){leftMax[i]Math.max(leftMax[i-1],height[i]);}int[]rightMaxnewint[n];rightMax[n-1]height[n-1];for(intin-2;i0;i--){rightMax[i]Math.max(rightMax[i1],height[i]);}for(inti0;in;i){sumMath.min(rightMax[i],leftMax[i])-height[i];}returnsum;}}2. 采用单调栈计算只要有凹槽就可以储水首先将元素放入单调栈中然后循环数组与栈顶对比。此时如果该元素相当于右侧大于栈顶的元素相当于底部再加上栈顶的下一个元素相当于左侧单调栈栈顶元素一定小于第二个元素就形成了凹槽。classSolution{publicinttrap(int[]height){intnheight.length;intres0;DequeIntegerstacknewArrayDeque();for(inti0;in;i){intrighti;while(!stack.isEmpty()height[right]height[stack.peek()]){intbottomstack.pop();if(stack.isEmpty()){// 左侧无元素无法形成凹槽break;}intleftstack.peek();intwright-left-1;inthMath.min(height[right],height[left])-height[bottom];resw*h;}stack.push(i);}returnres;}}3. 采用双指针按照动态规划的思路只需要维护leftMaxrightMax两个变量就可以将空间降至O(1)classSolution{publicinttrap(int[]height){intres0;intleft0,rightheight.length-1;intleftMax0,rightMax0;while(leftright){leftMaxMath.max(leftMax,height[left]);rightMaxMath.max(rightMax,height[right]);if(leftMaxrightMax){// 根据水桶原理leftMax比rightMaxx小此时无论右边多大水超过leftMax就会溢出。resleftMax-height[left];}else{resrightMax-height[right--];}}returnres;}}

相关文章:

[Java][Leetcode hard] 42. 接雨水

没做出来,看的官解。 1. 动态规划的思想 当位于i处,i处能接水的体积左侧最高点和右侧最高点的最小值(水桶原理)-自身的高度 class Solution {public int trap(int[] height) {int sum 0;int n height.length;int[] leftMax new…...

知识图谱里的“辈分”怎么算?聊聊HAKE如何用极坐标建模语义层级

知识图谱中的"家族树":HAKE模型如何用极坐标破解语义层级之谜 想象一下你正在整理一个庞大家族的族谱——从曾祖父辈到玄孙辈,每个人在家族树中的位置清晰可见。这种层级结构在人类社会中无处不在,而知识图谱中的实体同样存在着类似…...

玩转CloudCompare点云着色:手把手教你配置Scalar Field,让强度、高程数据一目了然

玩转CloudCompare点云着色:手把手教你配置Scalar Field,让强度、高程数据一目了然 点云数据的可视化是三维重建、地形测绘、逆向工程等领域的关键环节。当面对包含多维属性(如强度、高程、法向量)的激光雷达扫描数据时&#xff0c…...

当 ROS Noetic 遇上 Conda:在 Ubuntu 20.04 上管理 Python 环境的避坑指南

当 ROS Noetic 遇上 Conda:在 Ubuntu 20.04 上管理 Python 环境的避坑指南 在机器人开发领域,ROS(Robot Operating System)和Conda环境管理工具各自扮演着重要角色。ROS Noetic作为首个官方支持Python 3的LTS版本,与C…...

别再死记硬背了!用‘阅览室占座’和‘独木桥过河’两个生活例子,彻底搞懂操作系统的P、V操作

从生活场景秒懂操作系统:用阅览室和独木桥破解P、V操作 记得大学时第一次在图书馆抢座,好不容易找到空位却发现桌上放着"已占"的纸条——这种资源争夺的混乱场景,恰如操作系统中的进程竞争。而管理员后来推出的座位登记系统&#x…...

C++计算直线倾斜角与方位角

要计算一条直线的倾斜角(与X轴正方向的夹角)或方位角(与正北方向的顺时针夹角),核心在于根据直线上的两点坐标进行数学计算。以下是具体的数学原理和C实现。 一、核心数学公式 1. 倾斜角(与X轴夹角&#…...

【实战】RuoYi-Vue开发环境一站式部署:从零到一启动前后端分离项目

1. 环境准备:从零搭建基础组件 刚接触RuoYi-Vue时,最头疼的就是环境搭建。记得我第一次部署时,光是处理各种依赖冲突就花了整整两天。现在把踩坑经验总结成这份保姆级教程,帮你半小时搞定全套环境。 JDK安装是第一个门槛。推荐使…...

[Java毕设2026]宿舍管理系统_SpringBoot+Vue【文末附源码】

系统介绍 宿舍管理系统是一套面向高校、职校和学生公寓场景的数字化宿舍管理平台,围绕楼栋、房间、床位、学生和宿舍日常事务,打造一套清晰、高效、可追踪的业务管理系统。 系统概述 本系统采用前后端分离架构,前端基于 Vue 3 Element Pl…...

终极Windows右键菜单清理指南:ContextMenuManager让你的桌面操作效率翻倍

终极Windows右键菜单清理指南:ContextMenuManager让你的桌面操作效率翻倍 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否经常在Windows右键菜…...

终极鼠标灵敏度转换指南:3D游戏间精准保持肌肉记忆的完整解决方案

终极鼠标灵敏度转换指南:3D游戏间精准保持肌肉记忆的完整解决方案 【免费下载链接】SensitivityMatcher Script that can be used to convert your mouse sensitivity between different 3D games. 项目地址: https://gitcode.com/gh_mirrors/se/SensitivityMatch…...

2026届最火的降AI率网站解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当下,占据主流地位的降 AIGC 工具,凭借同义词替换、句式重组以及语义…...

如何理解A醇价格背后的检测与批次管理逻辑

如何理解A醇价格背后的检测与批次管理逻辑在化妆品原料采购领域,A醇(视黄醇)作为一种高活性功效成分,其价格差异往往令采购与研发人员困惑——同标称纯度的A醇,不同供应商报价可能相差悬殊。价格差异的根源&#xff0c…...

如何为Calibre高效获取豆瓣图书元数据:New Douban插件完整指南

如何为Calibre高效获取豆瓣图书元数据:New Douban插件完整指南 【免费下载链接】calibre-douban Calibre new douban metadata source plugin. Douban no longer provides book APIs to the public, so it can only use web crawling to obtain data. This is a cal…...

Windows 10安卓子系统完整安装教程:无需升级Win11的终极解决方案

Windows 10安卓子系统完整安装教程:无需升级Win11的终极解决方案 【免费下载链接】WSA-Windows-10 This is a backport of Windows Subsystem for Android to Windows 10. 项目地址: https://gitcode.com/gh_mirrors/ws/WSA-Windows-10 还在羡慕Windows 11用…...

国民技术 N32G430F8S7 TSSOP-20 单片机

关键特性 内核CPU -32位ARMCortex-M4 内核FPU,支持DSP指令 一内置1KB指令Cache缓存,支持Flash加速单元执行程序0等待 一 最高主频128MHz,160DMIPS 加密存储器 高达64KByte片内Flash,支持加密存储、分区管理及数据保护,…...

如何用Python-miio掌控小米智能设备:2025终极自动化控制指南

如何用Python-miio掌控小米智能设备:2025终极自动化控制指南 【免费下载链接】python-miio Python library & console tool for controlling Xiaomi smart appliances 项目地址: https://gitcode.com/gh_mirrors/py/python-miio Python-miio是一款强大的…...

手把手教你用PyTorch复现SuperPoint:从官方源码到自定义匹配可视化(附完整代码)

PyTorch实战:从零构建SuperPoint特征检测器与自定义可视化系统 在计算机视觉领域,特征点检测与匹配一直是基础而关键的技术环节。SuperPoint作为自监督学习的里程碑式工作,以其优异的性能表现成为众多视觉任务的基石。本文将带您深入PyTorch实…...

新能源数智化

1、方案总览 基于通用大数据实施方案框架,深度融合汽车行业「研产供销服」全价值链场景,构建以 “多模态数据智能中台”为核心,“数据智能引擎”与“空间智能引擎(数字孪生)” 为两翼的一体化平台,实现乘用…...

保姆级避坑指南:在Ubuntu 24.04虚拟机里用Docker搞定YOLOv11到MaixCam的模型转换

从零到一:Ubuntu 24.04虚拟机Docker实现YOLOv11模型到MaixCam的高效转换实战 边缘AI部署正成为智能硬件开发的热门方向,但对于刚接触Linux和Docker的开发者来说,从训练好的模型到实际设备部署往往充满挑战。本文将手把手带你完成YOLOv11模型从…...

OpenRGB:一站式解决你的RGB灯光管理烦恼,告别多软件切换时代!

OpenRGB:一站式解决你的RGB灯光管理烦恼,告别多软件切换时代! 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/Ca…...

校招面试PCB岗,没有项目经验就拿这三点补

不瞒各位说,当初找工作的时候,简历上那个"项目经历"栏差点给我整秃了。你说嵌入式开发、电子竞赛,好歹还能写点东西。但PCB设计这东西,学校教的和实际用的,感觉是两个世界。投了几个大厂的PCB岗,…...

如何彻底掌握Upscayl:从零到精通的AI图像超分辨率终极指南

如何彻底掌握Upscayl:从零到精通的AI图像超分辨率终极指南 【免费下载链接】upscayl 🆙 Upscayl - #1 Free and Open Source AI Image Upscaler for Linux, MacOS and Windows. 项目地址: https://gitcode.com/GitHub_Trending/up/upscayl 你是否…...

终极指南:如何用GPSTest精准测试手机卫星导航性能

终极指南:如何用GPSTest精准测试手机卫星导航性能 【免费下载链接】gpstest The #1 open-source Android GNSS/GPS test program 项目地址: https://gitcode.com/gh_mirrors/gp/gpstest 你的手机GPS到底有多准?🌍 通过GPSTest这款顶级…...

Rust 宏系统在工程化中的应用

Rust宏系统在工程化中的应用 Rust以其高性能和内存安全性著称,而宏系统则是其元编程能力的核心体现。在工程化开发中,宏能够显著减少重复代码、提升开发效率,并增强代码的可维护性。无论是自动生成样板代码,还是实现领域特定语言…...

VS Code Mermaid插件终极攻略:技术文档图表绘制的完全指南 [特殊字符]

VS Code Mermaid插件终极攻略:技术文档图表绘制的完全指南 🚀 【免费下载链接】vscode-markdown-mermaid Adds Mermaid diagram and flowchart support to VS Codes builtin markdown preview 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-mar…...

终极指南:5个技巧快速搭建Windows免费Syslog服务器

终极指南:5个技巧快速搭建Windows免费Syslog服务器 【免费下载链接】visualsyslog Syslog Server for Windows with a graphical user interface 项目地址: https://gitcode.com/gh_mirrors/vi/visualsyslog 还在为网络设备日志分散管理而烦恼吗?…...

Go语言的sync.Map中的使用

Go语言中的sync.Map是一个并发安全的键值对集合,它特别适合在高并发场景下替代传统的map加互斥锁的方案。与普通的map不同,sync.Map内部通过巧妙的机制实现了无锁读取和分段锁写入,从而在保证线程安全的同时提升了性能。对于需要频繁读取但较…...

bert-base-chinese效果展示:中文语义理解能力的实际案例分享

bert-base-chinese效果展示:中文语义理解能力的实际案例分享 1. 模型核心能力概览 bert-base-chinese作为中文NLP领域的基石模型,展现了令人惊艳的语义理解能力。这个由Google发布的预训练模型,专门针对中文语言特性进行了优化,…...

别再只调参了!用Scikit-learn的SVM搞定鸢尾花分类,这5个可视化技巧让结果一目了然

5个Scikit-learn可视化技巧:让鸢尾花分类结果会说话 在机器学习项目中,模型训练只是第一步。真正考验功力的是如何将晦涩的数值结果转化为直观、有说服力的可视化呈现。很多数据科学家花费大量时间调参优化,却在最后展示环节草草了事——打印…...

Upscayl终极指南:免费开源AI图像超分辨率工具完整解析

Upscayl终极指南:免费开源AI图像超分辨率工具完整解析 【免费下载链接】upscayl 🆙 Upscayl - #1 Free and Open Source AI Image Upscaler for Linux, MacOS and Windows. 项目地址: https://gitcode.com/GitHub_Trending/up/upscayl 你是否曾经…...