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

news2024/9/24 1:19:47

代码随想录算法刷题训练营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;
        //最大面积,单调递减栈+首尾得增加两个0
        int[] 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;

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1993554.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机的错误计算(五十六)

摘要 展示大数的正切函数值的错误计算。 由计算机的错误计算&#xff08;五十五&#xff09;知&#xff0c;国际IEEE 754 标准给出的正切函数的定义域是整个实数域范围。那么&#xff0c;在该范围内&#xff0c;软件的计算效果如何呢&#xff1f; 例1. 计算 . 在 Python下计…

字体识别验证码的介绍!

字体识别验证码 ​是一种安全机制&#xff0c;‌通过要求用户识别特定字体来验证用户的身份或防止自动化攻击。‌这种验证码通常包含一些经过特殊设计的字符&#xff0c;‌需要用户根据这些字符的特定样式&#xff08;‌如字体、‌字形等&#xff09;‌来进行识别和输入。‌字…

html+css网页制作 博云丝网5个页面 无js ui还原度100%

htmlcss网页制作 博云丝网5个页面 无js ui还原度100% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取…

el-tree限制选中个数

el-tree限制选中个数 <el-treestyle"max-width: 600px":data"Treedata":check-strictly"true"show-checkboxnode-key"id":props"defaultProps":default-expanded-keys"[1, 2]"ref"treeRef"check&quo…

Java数组类型

目录 一维数组 一维数组的声明 动态数组初始化 静态数组的初始化 一维数组的访问 数组长度 数组的遍历操作 数组中的默认值 数组中的两个常见异常 越界访问异常ArrayIndexOutOfBoundsException 空指针异常NullPointerException Java中的内存划分 一维数组的内存分…

pdf怎么加密码怎么设置密码?pdf加密码的几种设置方法

在数字化时代&#xff0c;信息的保密性与安全性日益成为我们不可忽视的重要环节。尤其对于包含敏感信息或个人隐私的PDF文档而言&#xff0c;保护其免受未授权访问的侵扰显得尤为重要。通过为PDF文档设置密码保护&#xff0c;我们能够筑起一道坚实的防线&#xff0c;确保只有拥…

危化品安全生产风险监测预警系统的构建与实施

引言 1、背景与重要性 在现代工业生产中&#xff0c;危险化学品&#xff08;简称“危化品”&#xff09;的使用和管理日益广泛。它们在化工、制药、能源等多个领域中扮演着不可或缺的角色。然而&#xff0c;危化品因其固有的易燃、易爆、腐蚀、有毒等特性&#xff0c;一旦管理…

Git使用错误分析

一.fatal: Pathspec is in submodule 我做了这样的错误操作&#xff0c;在一个仓库下的一个子目录&#xff0c;执行了git init 创建了一个子仓库&#xff0c;然后想删掉这个子仓库&#xff0c;就只删除了该子目录下的.git文件夹&#xff0c;而没有删除缓存&#xff0c;执行如下…

java: Internal error in the mapping processor: java.lang.NullPointerExceptio

java: Internal error in the mapping processor: java.lang.NullPointerExceptio 解决办法&#xff1a;idea里面加参数-Djps.track.ap.dependenciesfalse即可

Java程序设计:Java 网络聊天室客户端

相关网络编程前两篇文章&#xff1a;Java程序设计&#xff1a;Java网络编程实验 服务端部分见上一篇文章&#xff1a;Java程序设计&#xff1a;Java网络聊天室服务端 目录 1 实验名称 2 实验目的 3 实验源代码 4 实验运行结果图 5 总结 1 实验名称 Java 网络聊天室客户端 …

纳米软件的电源模块测试系统有什么功能和优势?

纳米软件电源模块自动化测试系统主要实现针对单路进4路出和单路进2路出的非隔离DCDC电源模块进行测试。本次方案包含对以下15个测试项目的自动化测试&#xff0c;分别为输入电压范围VIN的最大值最小值、输出电压范围VOUT的最大值最小值、输出纹波VOPP、电压调整率SV、负载调整率…

基于SpringBoot+Vue的学院商铺管理系统(带1w+文档)

基于SpringBootVue的学院商铺管理系统(带1w文档) 基于SpringBootVue的学院商铺管理系统(带1w文档) 互联网概念的产生到如今的蓬勃发展&#xff0c;用了短短的几十年时间就风靡全球&#xff0c;使得全球各个行业都进行了互联网的改造升级&#xff0c;标志着互联网浪潮的来临。在…

[VBA]使用VBA在Excel中 操作 形状shape 对象

excel已关闭地图插件,对于想做 地图可视化 的,用形状来操作是一种办法,就是要自行找到合适的 地图形状,修改形状颜色等就可以用于 可视化展示不同省市销量、人口等数据。 引言 在Excel中,通过VBA(Visual Basic for Applications)可以极大地增强数据可视化和报告自动化…

Spring Cache在业务系统中最佳实践教程详解及实现原理

1.概述 接着之前总结的如何保证MySQL与Redis数据同步一致性一文中提到在业务代码中一般采用旁路缓存策略方式实现同步&#xff0c;Spring Cache 就是 Spring Framework 基于该策略方式提供的一种缓存抽象&#xff0c;可以帮助开发者简化缓存的使用过程。它支持多种缓存实现&am…

【STM32】DMA数据转运(存储器到存储器)

本篇博客重点在于标准库函数的理解与使用&#xff0c;搭建一个框架便于快速开发 目录 DMA简介 DMA时钟使能 DMA初始化 转运起始和终止的地址 转运方向 数据宽度 传输次数 转运触发方式 转运模式 通道优先级 开启DMA通道 DMA初始化框架 更改转运次数 DMA应用实例-…

Google Mock 和 Google Test编写单元测试入门(环境配置、简单执行)

文章目录 环境的配置方法1&#xff1a;从源代码构建第一步&#xff1a;克隆库的源代码第二步&#xff1a;构建库 方法 2&#xff1a;使用 CMake 的 FetchContent示例 CMakeLists.txt 项目的创建项目结构CMakeLists.txt (根目录)main.cpp (示例程序)tests/CMakeLists.txt (测试部…

更换CentOS中docker的镜像源

如果docker pull镜像出现&#xff1a; error pulling image configuration: download failed after attempts6: dial tcp 173.236.182.137:443: i/o timeout 如果是阿里云&#xff0c;我们进入阿里云官网&#xff1a; 阿里云开发者社区-云计算社区-阿里云 然后点击产品&#…

医疗器械重大网络安全更新是什么?有何价值?

医疗器械重大网络安全更新是指那些影响到医疗器械的安全性或有效性的网络安全更新。这类更新通常涉及重大网络安全功能的变更&#xff0c;旨在提升医疗器械在网络环境中的安全性和稳定性。 一、医疗器械重大网络安全更新的价值 保障患者安全&#xff1a;医疗器械在处理患者数据…

开发学习日记1

用这个系列博客记录下学习开发的一些小收获 git的使用&#xff1a; 说来惭愧&#xff0c;学到了大二&#xff0c;git的使用还是一团糟&#xff0c;记录一下如何使用git进行团队合作开发 当要加入其他人的项目时首先你要创建自己的分支&#xff08;克隆一下其他分支&#xff…

处理Pandas中的JSON数据:从字符串到结构化分析

在数据科学领域&#xff0c;JSON作为一种灵活的数据交换格式&#xff0c;被广泛应用于存储和传输数据。然而&#xff0c;JSON数据的非结构化特性在进行数据分析时可能会带来一些挑战。本文将指导读者如何使用Pandas库将DataFrame中的JSON字符串列转换为结构化的表格数据&#x…