<代码随想录> 算法训练营-2024.12.31

今日专题:单调栈进阶
今日总结:单调栈的代码写起来感觉还是有点难度,这两道题的解题思路也得好好想一想

42. 接雨水

解法一 :双指针法

class Solution:
    def trap(self, height: List[int]) -> int:
        #按列计算当前列上可以接多少水,当前列左侧最高和右侧最高取最小值
        size=len(height)
        left=[0]*size
        right=[0]*size
        res=0
        for i in range(1,size):
            left[i]=max(left[i-1],height[i-1])
            right[size-1-i]=max(right[size-i],height[size-i])
        print(left)
        print(right)
        for j in range(size):
            res+=max(0,min(left[j],right[j])-height[j])
        return res

        

解法二:单调栈法

class Solution:
    def trap(self, height: List[int]) -> int:
        res=0
        size= len(height)
        if size<2:
            return res
        st=[0]

        for i in range(1,size):
            
            if height[i]<height[st[-1]]:
                st.append(i)
            elif height[i]==height[st[-1]]:
                st.pop()
                st.append(i)
            else:
                while len(st)>0 and height[i]>height[st[-1]]:
                    j=st.pop()
                    if len(st)>0:
                        res+=(min(height[i],height[st[-1]])-height[j])*(i-st[-1]-1)
                st.append(i)
        
        return res
        

        
84. 柱状图中最大的矩形

思路:遍历每一根柱子,找到左右两侧比其小的第一根,可形成矩阵大小为h[i]*(m-n)
总结:在原数组开头和结尾均加上0值


class Solution:
    def largestRectangleArea(self, heights: List[int]) -> int:
        #遍历每一根柱子,找到左右两侧比其小的第一根,可形成矩阵大小为h[i]*(m-n)
        res=0
        st=[]
        heights=[0]+heights+[0]
        size=len(heights)
        for m in range(size):
            if len(st)==0:
                st.append(heights[m])
                continue
            while len(st)>0 and heights[m]<heights[st[-1]]:
                i=st.pop()
                res=max(res,heights[i]*(m-st[-1]-1))
            st.append(m)

        return res
        

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

wujie无界微前端框架初使用

先说一下项目需求&#xff1a;将单独的四套系统的登录操作统一放在一个入口页面进行登录&#xff0c;所有系统都使用的是vue3&#xff0c;&#xff08;不要问我为啥会这样设计&#xff0c;产品说的客户要求&#xff09; 1.主系统下载wujie 我全套都是vue3&#xff0c;所以直接…

C语言 数组编程练习

1.将数组A的内容和数组B中的内容进行交换。&#xff08;数组一样大&#xff09; 2.创建一个整形数组&#xff0c;完成对数组的操作 实现函数Init()初始化数组全为0 实现print()打印数组的每个元素 实现reverse()函数完成数组元素的逆置 //2.创建一个整形数组&#xff0c;完…

【three.js】模型-几何体Geometry,材质Material

模型 在现实开发中&#xff0c;有时除了需要用代码创建模型之外&#xff0c;多数场景需要加载设计师提供的使用设计软件导出的模型。此时就需要使用模型加载器去加载模型&#xff0c;不同格式的模型需要引入对应的模型加载器&#xff0c;虽然加载器不同&#xff0c;但是使用方式…

MySQL和Hive中的行转列、列转行

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 文章目录 MySQL1.行转列2.列转行 Hive1.行转列2.列转行(1)侧窗(2)union MySQL 1.行转列 把多行转成列。直接group&#xff0c;sum(if()) 2.列转行 Hive 1.行转列 select name,sum(if(kmshuxu…

unity学习8:unity的基础操作 和对应shortcut

目录 1 unity的基础操作的工具&#xff0c;就在scene边上 1.1 对应shortcut快捷键 2 物体的重置/ 坐标归到0附近 3 F&#xff1a;快速找到当前gameobject 4 Q&#xff1a;小手和眼睛&#xff0c;在场景中移动 5 W&#xff1a;十字箭头&#xff0c;移动gameobject 6 …

对话|全年HUD前装将超330万台,疆程技术瞄准人机交互“第一屏”

2024年&#xff0c;在高阶智驾进入快速上车的同时&#xff0c;座舱人机交互也在迎来新的增长点。Chat GPT、AR-HUD、车载投影等新配置都在带来新增量机会。 高工智能汽车研究院监测数据显示&#xff0c;2024年1-10月&#xff0c;中国市场&#xff08;不含进出口&#xff09;乘用…

Openwrt @ rk3568平台 固件编译实践(二)- ledeWRT版本

目录 ledeWRT介绍固件编译下载代码修改feed源更新并安装编译第三方软件包制作用于eMMC烧写的rootfs基于lede发行版验证烧写rk3568.img, LEDE wrt启动成功refhttps://blog.csdn.net/zc21463071/article/details/106751361介绍rk3568平台下, lede 大神版 openwrt固件的下载、编译…

【Unity3D】Text文本文字掉落效果

相关技术&#xff1a;Text、TextMesh、Rigidbody&#xff08;刚体&#xff09;、BoxCollider&#xff08;碰撞体&#xff09;、TextGenerator、文本网格、文字网格 原理&#xff1a;使用UGUI Text获取其文字的每个字符网格坐标&#xff0c;转世界坐标生成对应的3D文本(TextMesh…

Spring Boot教程之四十九:Spring Boot – MongoRepository 示例

Spring Boot – MongoRepository 示例 Spring Boot 建立在 Spring 之上&#xff0c;包含 Spring 的所有功能。由于其快速的生产就绪环境&#xff0c;使开发人员能够直接专注于逻辑&#xff0c;而不必费力配置和设置&#xff0c;因此如今它正成为开发人员的最爱。Spring Boot 是…

el-table-fixed滚动条被遮挡导致滚动条无法拖动

/* 设置默认高度-滚动条高度 */ .el-table__fixed { height: calc(100% - 16px) !important; } .el-table__fixed {height: calc(100% - 16px) !important; } .el-table__fixed:before {height: 0px; }

探索大型语言模型新架构:从 MoE 到 MoA

探索大型语言模型新架构&#xff1a;从 MoE 到 MoA 当前&#xff0c;商业科技公司纷纷投身于一场激烈的竞赛&#xff0c;不断扩大语言模型的规模&#xff0c;并为其注入海量的高质量数据&#xff0c;试图逐步提升模型的准确性。然而&#xff0c;这种看似顺理成章的发展路径逐渐…

【通识安全】煤气中毒急救的处置

1.煤气中毒的主要症状与体征一氧化碳中毒&#xff0c;其中毒症状一般分为轻、中、重三种。 (1)轻度&#xff1a;仅有头晕、头痛、眼花、心慌、胸闷、恶心等症状。如迅速打开门窗&#xff0c;或将病人移出中毒环境&#xff0c;使之吸入新鲜空气和休息&#xff0c;给些热饮料&am…

分享:osgb倾斜数据转cesium-3dtiles 小工具.

背景: 很多知识殊途同归,在三维软件这块,少不了要和各种各样的数据格式打交道.osgb,stl,obj,3dtiles,3ds等等..虽然里面本质核心基本都是几何数据拓扑数据材质纹理数据等等,但是由于其组织方式不同和特殊的应用场景,导致很多模型需要转来转去...相信很多人在这方面都或多或少吃…

Node.js——fs(文件系统)模块

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

Mac M2基于MySQL 8.4.3搭建(伪)主从集群

前置准备工作 安装MySQL 8.4.3 参考博主之前的文档&#xff0c;在本地Mac安装好MySQL&#xff1a;Mac M2 Pro安装MySQL 8.4.3安装目录&#xff1a;/usr/local/mysql&#xff0c;安装好的MySQL都处于运行状态&#xff0c;需要先停止MySQL服务最快的方式&#xff1a;系统设置 …

第5章——与HTTP协作的Web服务器

第5章——与HTTP协作的Web服务器 用单台虚拟主机实现多个域名 ​ 一台服务器可以使用虚拟主机功能拥有多个域名。 ​ 域名通过DNS服务映射到IP地址&#xff08;域名解析&#xff09;之后访问目标网站。当请求发送到服务器时&#xff0c;已经是以IP地址形式访问了。 ​ 相同的…

基于Python的投资组合收益率与波动率的数据分析

基于Python的投资组合收益率与波动率的数据分析 摘要&#xff1a;該文通过研究马科维茨的投资组合模型&#xff0c;并将投资组合模型应用到包含6只金融股票的金融行业基金中。首先通过开源的财经接口Tushare获取股票原始数据&#xff0c;接着利用数据分析的黄金组合库&#xf…

AWS re:Invent 2024 现场实录 - It‘s all about Scale

时隔五年&#xff0c;再度造访美国&#xff0c;也是同样的主题&#xff0c;参加在拉斯维加斯举行的 AWS re:Invent 大会。 会场 从 2012 起第一届开始&#xff0c;每年的 re:Invent 大会都放在拉斯维加斯&#xff0c;主会场也都放在威尼斯人酒店 (Venetian)。有小伙伴好奇这背…

【实用干货】日本上市药品价格、说明书、在研新药在线查询网站及数据库

众所周知&#xff0c;日本对上市药品公开信息程度非常高&#xff0c;我们在了解药品信息时常常会访问日本药监局(日本药方局)官网的PMDA数据库来查询信息&#xff0c;但由于网站的不熟悉或语言障碍原因&#xff0c;导致查找某个药品信息需要花费大量时间&#xff0c;如药物综述…

【vba源码】自动获取汇率

Hi&#xff0c;大家好&#xff01; 没有想到今天居然是腊八&#xff0c;过了腊八就是年&#xff0c;离过年越来越近了&#xff0c;那在这里给大家就拜个年&#xff0c;希望大家在新的一年都有好事发生。 最近在弄点小项目&#xff0c;在项目遇到了一个汇率计算的问题&#xff…