27.哀家要长脑子了!---栈与队列

1.739. 每日温度 - 力扣(LeetCode)

 用单调栈的方法做:

从左到右遍历数组:

栈中存放的是下标,每个温度在原数组中的下标,从大到小排列,因为这样才能确保的是最近一天的升高温度

如果栈为空,则直接将i进栈;当此时的栈不为空,并且此时遍历的温度大于栈顶的温度(即栈中最大的温度)循环以下操作:将当前的温度下标减去栈顶元素的下标,然后栈顶元素的下标就是此时所计算的那一天

res[st.top()] = i - st.top();

这意味着从索引st.top()代表的那一天开始,直到现在的索引i,我们首次遇到了一个更高的温度,因此,我们可以确定在st.top()这一天之后的i - st.top()天,有一个更高的温度出现。

class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {int n = temperatures.size();vector<int> res(n, 0);stack<int> st;for(int i = 0; i < n; i++){while(!st.empty() && temperatures[i] < temperatures[st.top()]{res[st.top()] = i - st.top();st.pop();}st.push(i);}return res;}
};
2.496. 下一个更大元素 I - 力扣(LeetCode)

这中下一个更大更小元素的就是用单调栈

首先注意是要根据nums1的元素,去nums2中查找对应的下一个更大元素,所以,返回数组的大小应该是跟nums1保持一致的

从右至左到序遍历数组:

如果栈不为空并且,此时遍历的数字大于栈顶中的数字,我们就可以把栈中比此时数字小的数字弹出,因为我们要找的是下一个比它大的数字,比他小的肯定不行啊。

循环结束的两种条件,栈为空,找到比它大的数字了

如果是前者的话,代表这个数组里面没有比这个数组更大的数字了,就-1

如果是后者的话,我们就找到一个当前数组里比他大的下一个元素,最近的。就把这个比它大的数字压入栈中呗。

nums1中的元素必定在nums2中,我们在哈希表中保存nums2中每个数字的下一个更大的元素,最后根据nums1元素访问就好

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

首先用暴力的做法还是弯弯绕绕费劲做出来了

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {int n = nums1.size(), m = nums2.size();vector<int> res;int k = 0;for(int i = 0; i < n; i++){for(int j = 0; j < m; j++){if(nums1[i] == nums2[j]){for(k = j + 1; k < m; k++){if(nums2[j] < nums2[k]){res.push_back(nums2[k]);break;}}if(k >= m){res.push_back(-1); }}}}return res;}
};

 

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

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

相关文章

电脑C盘不知不觉满了?学会这6种解决方法!

为何C盘莫名其妙满了&#xff1f;不用怕&#xff0c;本文将告诉您6个解决方法&#xff0c;帮您轻松解决Windows11/10/8/7中 C盘空间不足的问题&#xff01; C盘爆满的后果是什么&#xff1f; 许多Windows用户都可能会碰到这样的问题&#xff1a;“为何我的Win10 C盘莫名其妙满…

达索电磁仿真软件CST查看方式和消除2D/3D图的反射效果【官方教程】

消除2D/3D图的反射效果 查看和分析2D/3D结果时消除不必要的反射效果 View > Options > View Options > Specials 正面看CST软件的3D场分布图时&#xff0c;如下图所示&#xff0c;因为反射效果导致无法看清楚。本章节介绍一下相应的解决方法。 因为View Options的S…

车牌号OCR识别接口如何对接

车牌号OCR识别接口也叫车牌号码文字识别OCR接口&#xff0c;指的是传入车牌照片&#xff0c;精准识别静态车牌图像上的文字信息。那么车牌号OCR识别接口如何对接呢&#xff1f; 首先我们找到一家有做车牌文字识别接口的服务商&#xff0c;数脉API&#xff0c;然后注册账户&…

一文读懂 RAG:它将如何重新定义 AI 的未来?

RAG 可以使 LLM 能够在实时请求提供事实信息时&#xff0c;访问外部来源的数据&#xff0c;比如经过审核的数据库或互联网上的信息。这样一来&#xff0c;RAG 就消除了大家对于 LLM 仅依赖其训练数据中获得的内部知识库的顾虑&#xff0c;毕竟&#xff0c;这些知识库可能存在缺…

2203-简单点-ultralytics库解析-data模块

data模块 overview布局\_\_init__.pyfrom .base import BaseDataset\_\_all__ annotator.pyaugment.pyclass BaseTransformclass Composeclass BaseMixTransformclass 未完继续 overview布局 从上往下解析 __init__.py from .base import BaseDataset __init__.py 文件在 Pyt…

自建XXL-JOB调度平台教程

一、XXL-JOB简介 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。它支持通过Web界面进行管理调度任务&#xff0c;包括任务的增删改查、执行状态监控等。同时&#xff0c;XXL-JOB提供了Java、Spring Boot等多种接入方式&am…

2016-2021年全国范围的2.5m分辨率的建筑屋顶数据

一、论文介绍 摘要&#xff1a;大规模且多年的建筑屋顶面积&#xff08;BRA&#xff09;地图对于解决政策决策和可持续发展至关重要。此外&#xff0c;作为人类活动的细粒度指标&#xff0c;BRA可以为城市规划和能源模型提供帮助&#xff0c;为人类福祉带来好处。然而&#xf…

echarts环形图 legend文字过长显示...鼠标移动上展示全称

legend: {type: scroll,orient: vertical,x: left,y: bottom,top: "42%",left: 13%,data: this.dutyNames,textStyle: { color: #fff },triggerEvent: true,tooltip: {show: true,trigger: item,//鼠标移动上去展示全称},formatter: function (params) {var val &qu…

C++11:并发新纪元 —— 深入理解异步编程的力量(1)

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的Linux高性能服务器编程系列之《C11&#xff1a;并发新纪元 —— 深入理解异步编程的力量》&#xff0c;在这篇文章中&#xff0c;你将会学习到C新特性以及异步编程的好处&#xff0c;以及其如何带来的高性能的魅力&…

最少数量线段覆盖-华为OD

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、java代码五、测试用例 前言 本人最近再练习算法&#xff0c;所以会发布一些解题思路&#xff0c;希望大家多指教 一、题目描述 给定坐标轴上的一组线段&#xff0c;线段的起点和终点均为整数…

JavaScript创建日期

创建日期 在JavaScript中创建日期有四种方法 ● 使用new Date() const now new Date(); console.log(now);● 直接输入月、日、年、时间 console.log(new Date(Aug 02 2024 18:05:41));● 也可以输入年月日 console.log(new Date(December 24, 2015));● 直接按照年、月、…

硬盘架构原理及其算法RAID工作原理写惩罚

一、硬盘的架构以及寻址原理 硬盘工作原理&#xff1a; 硬盘寻址原理&#xff1a;逻辑顺序磁道、盘片、扇区&#xff08;顺序CHS&#xff09; 二、机械硬盘算法 读取算法 寻道算法 个人与企业适合的算法和寻道 个人使用的机械硬盘适合的寻道算法和读取算法是&#xff1a…