代码随想录Day63 |503.下一个更大元素II 42. 接雨水

代码随想录Day63 |503.下一个更大元素II 42. 接雨水

  • 503.下一个更大元素II
  • 42.接雨水
    • 双指针
    • 单调栈

503.下一个更大元素II

文档讲解:代码随想录
视频讲解: 单调栈,成环了可怎么办?LeetCode:503.下一个更大元素II
状态

单调栈中存储的元素和单调性都和之前一样

主要是对循环数组怎么处理

//循环数组的处理方法
//循环数组相当于是需要遍历两次原本的数组
//1. 可以再复制一个数组在原本的数组后面
//2. 将遍历的循环长度增加为2*n-1,然后对i取mod(n)那么超过n的i也会变为i
class Solution {
public:vector<int> nextGreaterElements(vector<int>& nums) {int len = nums.size();vector<int> res(len,-1);if(len == 0) return res;stack<int> check;check.push(0);for(int i = 1;i<2*len-1;i++){while(!check.empty() && nums[i%len] > nums[check.top()]){res[check.top()] = nums[i%len];check.pop();}check.push(i%len);}return res;}
};

42.接雨水

文档讲解:代码随想录
视频讲解: 单调栈,经典来袭!LeetCode:42.接雨水
状态

双指针

两个指针分别从头和尾向中间移动,并记录扫描过的左端和右端木板最大值。
当右端木板最大值比左端木板最大值大时,我们考虑左指针指向的当前木板。那么其一定是可以存水的,因为其右边有比他高的木板。具体存水量是当前的左端最大值减去当前木板高度。

//双指针
class Solution {
public:int trap(vector<int>& height) {int left = 0;int right = height.size()-1;int res = 0;int leftmax = height[left];int rightmax = height[right];while(left <= right){leftmax = max(leftmax,height[left]);rightmax = max(rightmax,height[right]);//当左边的最高小于右边最高//可以以左边木板的高度来确定盛水量,因为右边始终有一个比他高的为他兜底//有点贪心的想法//盛水量就是左边的最大值减去当前木板的高度。if(leftmax<rightmax){res += leftmax-height[left];left++;}else{res += rightmax-height[right];right--;}}return res;}
};

单调栈

对于一个下标i寻找其左边的第一个大值和右边第一个大值,这个位置的积水量就可以求得
对于栈内一个可以积水的情况,栈头元素表示当前木板,栈头第二个元素应当表示当前木板的左边最大值,待入栈元素表示当前木板的右边木板。所以在该单调栈中应该是栈头元素较小,栈底元素较大。
在这里插入图片描述
当遇到与栈头相同的元素要入栈时,应当弹出栈头,压入最新的下标。
栈中存放的元素:当前木板的下标。

class Solution {
public:int trap(vector<int>& height) {int res = 0;stack<int> check;check.push(0);for(int i = 1;i<height.size();i++){//如果待压入元素比栈头元素小直接压入if(height[i] < height[check.top()]){check.push(i);}//如果相等,先弹出再压入else if(height[i] == height[check.top()]){check.pop();check.push(i);}//如果大,那说明可以计算积水量else{while(!check.empty() && height[i] > height[check.top()]){//当前积水的木板int mid = check.top();check.pop();if(!check.empty()){//计算积水高度,应当是栈头第二个元素和待压入元素的最小值int h = min(height[check.top()],height[i]) - height[mid];//计算积水宽度int w = i-check.top()-1;res += h*w;}}//压入check.push(i);}}return res;}
};

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

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

相关文章

基于Java SSM框架实现高考填报信息系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现高考填报信息系统演示 JAVA简介 Java主要采用CORBA技术和安全模型&#xff0c;可以在互联网应用的数据保护。它还提供了对EJB&#xff08;Enterprise JavaBeans&#xff09;的全面支持&#xff0c;java servlet API&#xff0c;JSP&#xff08;java serv…

OpenAI 与开源多语言嵌入模型

原文地址&#xff1a;OpenAI vs Open-Source Multilingual Embedding Models 选择最适合您的数据的模型 2024 年 2 月 25 日 OpenAI最近发布了他们的新一代embedding模型&#xff0c;称为embeddingv3&#xff0c;他们描述是他们性能最好的embedding模型&#xff0c;具有更高…

企业微信主体怎么转让给别人?

企业微信变更主体有什么作用&#xff1f;当我们的企业因为各种原因需要注销或已经注销&#xff0c;或者运营变更等情况&#xff0c;企业微信无法继续使用原主体继续使用时&#xff0c;可以申请企业主体变更&#xff0c;变更为新的主体。企业微信变更主体的条件有哪些&#xff1…

Zookeeper启动报错排查

前言&#xff1a;生产linux部署的zookeeper&#xff0c;执行启动脚本后&#xff0c;还是无法使用&#xff0c;故进行重启排查 在zookeeper的bin目录下执行 ./zkServer.sh start-foreground 可实时查看启动日志排查问题 根据上面的日志可以看出&#xff0c;是zoo.cfg配置文件里…

绿幕背景抠图SDK解决方案

随着影像技术的日益发展和普及&#xff0c;视频制作和图像处理已经成为众多行业不可或缺的一环。美摄科技&#xff0c;作为业内领先的影像技术提供商&#xff0c;针对企业需求&#xff0c;推出了全新的绿幕背景抠图SDK解决方案&#xff0c;旨在为企业提供更加高效、精准的影像处…

Java技术发展历程中的六大春天:从Web开发到大数据战略

Java技术发展历程中的六大春天&#xff1a;从Web开发到大数据战略 Six Springs in the Development Journey of Java Technology: From Web Development to Big Data Strategy 自Java诞生以来&#xff0c;其发展历程中出现了多个关键的“春天”时刻&#xff0c;每一段历程都伴随…

flashback to timestamp 耗时

flashback pluggable database XX to timestamp to_date(2024-02-26 13:11:56,yyyy-mm-dd hh24:mi:ss); 1TB 花费2小时&#xff0c;如果做了还原点好像很快 select trunc( a.FIRST_TIME,HH24),count(*) from v$flashback_database_logfile a group by trunc( a.FIRST_TIME,…

ADC制剂生产过程中的微粒控制-隧道烘箱在线粒子监测系统 中邦兴业

ADC制剂生产过程中的污染和交叉污染控制需要从多个方面入手&#xff0c;包括生产环境、设备、原辅料、生产过程、人员卫生和培训以及微生物监控等。只有全面、有效地实施这些控制措施&#xff0c;才能确保ADC制剂的质量和安全性。 ADC制剂生产过程中的微粒控制 ADC制剂生产中的…

StarRocks之监控管理(内含DashBoard模板)

先看下最终效果图 架构 Prometheus 是一个拥有多维度数据模型的、灵活的查询语句的时序数据库。它可以通过 Pull 或 Push 采集被监控系统的监控项,存入自身的时序数据库中。并且通过丰富的多维数据查询语言,满足用户的不同需求。 Grafana 是一个开源的 Metric 分析及可视化系…

右值引用的意义 以及 move函数,forward完美转发

文章目录 右值引用的意义move 函数forward 完美转发 右值引用的意义 直观意义&#xff1a; 为临时变量续命&#xff0c;也就是为右值续命&#xff0c;因为右值在表达式结束后就消亡了&#xff0c;如果想继续使用右值&#xff0c;那就会动用昂贵的拷贝构造函数。&#xff08;关…

k8s 进阶实战笔记 | NFS 动态存储类的部署与使用

文章目录 NFS 动态存储类的部署与使用演示环境说明NFS subdir external provisioner准备 NFS 服务器手动部署 NFS Subdir External Provisioner部署 StorageClass验证使用更多信息 NFS 动态存储类的部署与使用 演示环境说明 演示环境信息&#xff1a;单机K3s 1.28.2 操作系统…

配置用户通过IPv6方式上网

组网需求 运营商为企业分配了WAN侧的IPv6地址1111:2222:A0EE:6::2/64和LAN侧的IPv6地址1111:3333:E840:2::1/64&#xff0c;企业通过运营商提供的IPv6地址配置上网。 图1 配置用户通过IPv6方式上网 操作步骤 1、在IPS上的配置 interface GigabitEthernet0/0/4 ipv6 enable…

代码随想录Leetcode377. 组合总和 Ⅳ

题目&#xff1a; 代码(首刷看解析 2024年2月27日&#xff09;&#xff1a; class Solution { public:// 思路&#xff1a;动态规划int combinationSum4(vector<int>& nums, int target) {// 1条件判断:无// 2定义dp 初始化 总和为target的数量vector<int> dp…

.NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】

设计模式是软件工程中常用的解决特定问题的通用设计方法。它们提供了经过验证的解决方案&#xff0c;可用于解决在软件开发过程中经常遇到的一些常见问题。设计模式不是一种具体的编程语言特性或语法&#xff0c;而是一种通用的设计思想或模板&#xff0c;可以帮助开发人员设计…

【数电符号】9 Selectable Functions

1 AND 与门 2 OR 或门 3 NOT(Inverted) 非门 4 NAND 与非门 5 NOR 或非门 6 NANDOR 与或非门 … 7 XNOR 同或门 相同为1&#xff0c;不同为0 8 XOR 异或门 不同为1&#xff0c;相同为0 9 Buffer 缓冲器 也有不带施密特触发器的 //-----------Example---------------------…

基于springboot+vue的抗疫物资管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

c++数据结构算法复习基础--1

一、大体复习内容 复习思路&#xff1b; 二、数据结构算法-常见复杂度汇总介绍-性能对比-图表展示 数据结构: 相互之间存在一种或者多种特定关系的数据元素的集合。在逻辑上可以分为线性结构&#xff0c;散列结构、树形结构&#xff0c;图形结构等等。 数据结构说的是组织…

kubectl使用及源码阅读

目录 概述实践样例yaml 中的必须字段 kubectl 代码原理kubectl 命令行设置pprof 抓取火焰图kubectl 中的 cobra 七大分组命令kubectl createcreateCmd中的builder模式createCmd中的visitor访问者模式外层VisitorFunc分析 结束 概述 k8s 版本 v1.24.16 kubectl的职责 1.主要的…

vue基础概念(1)

1. 前言 此项目基于vue2开发 1.1. vue组件 1.2. 文本插值表达式 用于返回data方法中的对象属性 也可以用于数据判断例如{{age >xx ? 老年 &#xff1a;青年}} 1.3. 属性绑定 v-bind :xxx 一般用于input输入框等 1.4. 事件绑定 v-on 1.5. 双向绑定 v-model 表单输入项…

UTONMOS元宇宙游戏发展趋势是什么?

UTONMOS元宇宙游戏的发展趋势包括以下几个方面&#xff1a; 更加真实的体验&#xff1a;随着技术的进步&#xff0c;UTONMOS元宇宙游戏将提供更加逼真的视觉、听觉和触觉体验&#xff0c;让玩家更加身临其境。 社交互动&#xff1a;UTONMOS元宇宙游戏将越来越注重社交互动&am…