代码随想录算法训练营第五十三天 | 739.每日温度 496.下一个更大的元素I 503.下一个更大的元素II

news/2024/7/8 22:59:01/文章来源:https://www.cnblogs.com/cscpp/p/18286689

739.每日温度

题目链接 文章讲解 视频讲解
单调栈适合的场景:求当前元素左面或右面第一个比它大或小的元素

  • 单调栈里存什么元素
    只要存下标就可以了,比较元素时可以通过下标取元素
  • 单调栈是单调增还是单调减(从栈顶到栈底)
    使用单调增的单调栈

解题步骤:

  1. 遍历数组,当栈空时直接入栈
  2. 如果栈不空比较当前元素与栈顶元素,如果当前元素大于栈顶元素,则记录距离,并弹出栈顶元素
  3. 循环第二步直到栈空或者栈顶元素不小于当前元素,将当前元素入栈
class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {stack<int> st;vector<int> result(temperatures.size(), 0);for(int i = 0; i < temperatures.size(); ++i) {while (!st.empty() && temperatures[i] > temperatures[st.top()]) {result[st.top()] = i - st.top();st.pop();}st.push(i);}return result;      }
};

496.下一个更大元素I

题目链接 文章讲解 视频讲解

思路:建立一个map映射,将nums1中的元素和下标做映射,使得根据元素可以获得下标

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {stack<int> st;vector<int> result(nums1.size(), -1);unordered_map<int, int> umap;for(int i = 0; i < nums1.size(); ++i) umap[nums1[i]] = i;for(int i = 0; i < nums2.size(); ++i) {while(!st.empty() && nums2[i] > st.top()) {if(umap.find(st.top()) != umap.end())result[umap[st.top()]] = nums2[i];st.pop();}st.push(nums2[i]);}return result;}
};

503.下一个更大的元素II

题目链接 文章讲解 视频讲解

只需将数组遍历两遍,计算下标时使用i % nums.size()

class Solution {
public:vector<int> nextGreaterElements(vector<int>& nums) {stack<int> st;vector<int> result(nums.size(), -1);for(int i = 0; i < 2 * nums.size(); ++i) {while(!st.empty() && nums[i % nums.size()] > nums[st.top()]) {result[st.top()] = nums[i % nums.size()];st.pop();}st.push(i % nums.size());}return result;}
};

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

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

相关文章

积分中值定理的证明1

积分中值定理的证明如下:

24年读书清单

最近整理的读书清单,今年的读书就从里面挑选了;

【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错

问题描述 iOS Objective-C 应用,连接Azure Storage Account, 根据官网Example代码,在没有关闭Storage Account的匿名访问时,程序正常运行。但是,只要关闭了匿名访问,上传blob到Container中,就会报错:Public access is not permitted on this storage account 问题解答…

模拟集成电路设计系列博客——9.4 ESD保护单元

模拟集成电路设计 9.4 ESD保护单元 ESD,即electrostatic discharge(静电放电)是集成电路设计中的一个经典问题。通常在电路的生产和使用过程中,很容易由于各种原因积累大量的静电电荷,一旦产生静电放电,极高的静电电压(可能\(>1000V\))会对电路产生不可逆的破坏。因…

函数进阶应用1

Excel函数进阶VLOOKUP函数 返回多列结果 通过混合引用,match函数查找以及Vlookup函数,使用填充柄拖拽行列填充 操作演示:说明首先我们可以写一个普通的VLOOKUP函数通过match函数找到要填充的符合条件的内容所在单元格的位置在拖拽时,分析哪些需要绝对引用,哪些需要混合引用…

Linux学习前置,红帽Linux系统安装

前置: 下载:VMware Workstation Pro 17,以及所需要使用的Linux版本;安装VMware Workstation; 安装: 进入VMware后选择新建虚拟机: 选择Linux和red hat 9版本; 选择使用网络地址转换 接下来选择推荐的设置就好; 选择新建磁盘 虚拟机创建好后在设备一栏里单击CD/DVD(SAT…

C++:win11下的VScode构建百度Comate

一. VScode的安装官网下载地址:https://code.visualstudio.com/ (选择好对应的系统版本) 汉化:安装完软件后,打开软件界面的"扩展商店",搜索Chinese,下载相应的插件,如下图:二. 配置C++开发环境VSCode只是一个高级的编辑器,可以用来写C++代码,不能直接编译…

学习笔记(0):重拾Halcon

目录前言教学视频 前言 了解我的人可能知道,我其实很想回去全职做外贸,但是大环境不好,淘宝做了3个月,1688做了1个月。我只能说销量很惨淡。现在打算还是老老实实上班去了。 教学视频 我之前找一个B站UP主,买了一下他的教学视频。600块钱,总共有40集,大概10个小时。大概…

Golang channel底层是如何实现的?(深度好文)

Go语言为了方便使用者,提供了简单、安全的协程数据同步和通信机制,channel。那我们知道channel底层是如何实现的吗?今天k哥就来聊聊channel的底层实现原理。同时,为了验证我们是否掌握了channel的实现原理,本文也收集了channel的高频面试题,理解了原理,面试题自然不在话…

初识XML

一.XML概述XML,Extensible Markup Language,扩展性标识语言具体作用为:(1)可作为一种简单的数据库,存储并检索数据;(2)传输约定格式的文件;(3)做软件的配置文件。【配置文件:保存软件设置的文件】HTML和XML的区别:HTML标签不能自定义,XML标签只能自定义。 HTML语法要…

本地Windows10怎样配置免安装版本MySQL?

下载MySQL免安装压缩包下载地址:https://downloads.mysql.com/archives/community/ 解压安装1、接下来我们解压文件夹,这时我们解压的文件夹是没有my.ini文件和data目录,这时我们需要自己创建my.ini文件,data文件后期回自动生成 2、新建配置my.ini文件,并添加配置信息,如下…

8、IDEA集成Git

8.1、配置Git忽略文件 8.1.1、忽略文件的原因 在使用 IDE 工具时,会自动生成一些和项目源码无关的文件,所以可以让 Git 忽略这些文件。 此外,把这些无关文件忽略掉,还能够屏蔽不同 IDE 工具之间的差异。 8.1.2、创建忽略规则文件如上图所示,在用户家目录下创建了一个忽略规…

时间序列分析专题——指数平滑模型

指数平滑法模型,分为季节性模型和非季节性模型。季节性模型只有在为活动数据集定义了周期时才可用。 本章只理论性地介绍这六种指数平滑法模型,让学习者在论文的应用中有话可写。 在具体实现中,SPSS会自动识别并给定一种最好的模型。 目录一、简单指数平滑法1.模型介绍2.关于…

Blazor 逐键搜索并动态反馈到url

Blazor 逐键搜索并动态反馈到url 源码 前言: 今天打开了 spotify 网页版找歌, 突然发现这个功能很抓眼球,于是试试blazor能不能模仿一下.1. 节省时间,直接用模板开搞 新建项目,使用bb模板, 命名为 b22dynamicURL2. 运行一次,看看效果 显示如下模板站点,就说明你前面的操作都对了…

集团数字化建设总体规划

1、数字生态体系建设规划 体系规划整体思路 从战略出发,描绘企业愿景蓝图,结合领先实践,设计方案与实施路线 通过体系规划和建设,助力业务发展,支撑战略落地 数字化助力上下贯通的高效管理与横向协同的业务经营 建设后援集中平台,实现高效高质集中作业、交叉销售,产生规…

氛围共处(Ambient Co-presence)丨RTE 共读计划

在同一个网络空间和情境下,营造一种微妙的、隐约感知的、实时同步的感觉。 加入「RTE 共读计划」: 重要的技术,往往是那些不易察觉却无所不在的技术。欢迎阅读「RTE 共读计划」的文章,我们希望通过本计划:• 挖掘到那些帮助人们跨越距离实时互动(Real-Time Engagement,R…

【已解决】pip已经安装好了模块,运行代码还是报错说没安装

在 Python 开发中,有时用 pip 安装了模块,运行代码时却提示没安装,这让人很困惑。下面来看看可能的原因和解决办法可能原因:1. 虚拟环境出错:如果用了虚拟环境,可能装错了地方,运行代码时用的环境没装这个模块。2. Python 版本不同:安装模块和运行代码的 Python 版本不…

# Day01

愿你自由如夏天的风,去实现所有开出花来的梦 Ctrl+C复制 Ctri+V粘贴 Crtl+A全选 Crtl+X剪切 Crtl+Z撤销 Crtl+S保存 …

关于平衡树(施工中)

关于Splay$\LARGE {一些无聊的定义}$ 二叉搜索树(BST树) 定义 二叉搜索树是一种二叉树的树形数据结构,其定义如下:空树是二叉搜索树。若二叉搜索树的左子树不为空,则其左子树上所有点的附加权值均小于其根节点的值。若二叉搜索树的右子树不为空,则其右子树上所有点的附加权…