当前位置: 首页 > news >正文

leetcode496. 下一个更大元素 I 【单调栈】

【简单题】(暴力遍历法很简单)但是时间复杂度很高,n的立方级别了。。。

代码:

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {vector<int> ans;	// 存放结果for (int i = 0; i < nums1.size(); i++) {int t = nums1[i];	// 暂存要查找的值for (int j = 0; j < nums2.size(); j++) {	// 在nums2中找与t相等的值if (nums2[j] == t) {	// 如果找到相等的值,就往后找第一个比他大的int k;for (k = j + 1; k < nums2.size(); k++) {if (nums2[k] > t) {	// 找到第一个比它大的元素,压入该元素入栈ans.push_back(nums2[k]);break;}}if (k == nums2.size()) {	// 遍历完nums2数组,没有找到比它大的元素。压入 -1 入栈ans.push_back(-1);}}}}return ans;}
};

运行结果:

 

进阶方法:

进阶:你可以设计一个时间复杂度为 O(nums1.length + nums2.length) 的解决方案吗?

答案思路:【单调栈】

怎么样才能使得 用 nums1中的元素去 nums2中查找的时候,能够很快的不用遍历就可以查到第一个比它大的元素呢?

先预处理 num2,使得对于他的每个元素,用一个哈希表来存储第一个比他大的元素的映射。

步骤(参考leetcode官方题解)

遍历完之后 hashmap 中存储的键值对如下所示:

 

自己的话总结:

从后往前遍历(当前值为t),如果栈中的值比 t 小,则出栈到没有比它小 或 栈空位置。然后设置哈希映射,键为 t,值为 栈顶元素。然后将该元素入栈。直到遍历完第一个元素。

这样,对于 nums2中的每一个元素,在hashmap中都存储了 第一个比他大的元素 的映射。

注意:

使用 unordered_map 时,要引入库文件:#include <unordered_map>

代码:

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {unordered_map<int, int> mp;	// 设置哈希表stack<int> st;	 // 栈for (int i = nums2.size() - 1; i >= 0; i--) {	// 从后往前遍历 nums2int t = nums2[i];while (!st.empty() && t > st.top())		// 如果栈非空的条件下,当前值 > 栈顶元素,就出栈st.pop();if (st.empty()) {	// 如果栈为空,说明在该数组中,该元素没有第一个比它大的元素,设置它的映射值为 -1mp[t] = -1;}else {mp[t] = st.top();	// 如果栈非空,那么该元素的哈希映射值为 栈顶元素。}st.push(t);	}vector<int> ans;for (int i = 0; i < nums1.size(); i++) {ans.push_back(mp[nums1[i]]);}return ans;}
};

 

相关文章:

leetcode496. 下一个更大元素 I 【单调栈】

【简单题】&#xff08;暴力遍历法很简单&#xff09;但是时间复杂度很高&#xff0c;n的立方级别了。。。 代码&#xff1a; class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {vector<int&g…...

Fastadmin框架 聚合数字生活抵扣卡系统v2.8.6

【2.8.6更新公告】 1.【优化】优化已知问题。 2.【新增 】新增区县影院。...

windows下MSYS、MinGW编译环境使用网络API时报错:undefined reference to `inet_pton‘解决办法

windows下MSYS、MinGW编译环境使用网络API时报错&#xff1a;undefined reference to inet_pton’解决办法 mingw-gcc环境使用网络需要加上库 -lws2_32。 如果是使用的是Qt Creator那么需要在.pro文件中加入一行&#xff1a;win32:LIBS -lws2_32。 当在项目中使用inet_pton、…...

unity-AI自动导航

unity-AI自动导航 给人物导航 一.地形创建 1.首先我们在Hierarchy面板中创建一个地形对象terrian&#xff0c;自行设定地形外貌&#xff0c;此时我们设置一个如下的地形外观。 二.创建导航系统 1.在主人公的Inspector、面板中添加Nav Mesh Agent &#xff08;导航网格代理&…...

使用create-react-app创建react项目

create-react-app 全局安装create-react-app npm install -g create-react-app 使用create-react-app创建一个项目 $ create-react-app your-app 注意命名方式Creating a new React app in /dir/your-app.Installing packages. This might take a couple of minutes. 安装过…...

12.串,串的存储结构与模式匹配算法

目录 一. 一些术语 二. 串的类型定义 &#xff08;1&#xff09;串的顺序存储结构 &#xff08;2&#xff09;串的链式存储结构 三. 串的模式匹配算法 &#xff08;1&#xff09;BF算法 &#xff08;2&#xff09;KMP算法 四. 案例实现 串(String)---零个或多个任意字符…...

Ribbon:listOfServers ,${variableName:defaultValue}

解释&#xff1a; 配置了address的地址,请求会走address&#xff0c;也就是http://127.0.0.1:8081&#xff0c;通常用户与别的后端服务进行联调设置为其本地服务的ip。 如果address的地址被注释掉&#xff0c;如下面所示&#xff0c;类似这样的占位符${variableName:defaultVa…...

TensorFlow二元-多类-多标签分类示例

探索不同类型的分类模型&#xff0c;使用 TensorFlow 构建二元、多类和多标签分类器。 二元分类 简述 逻辑回归 二元交叉熵 二元分类架构 案例&#xff1a;逻辑回归预测获胜团队 多类分类 简述 Softmax 函数 分类交叉熵 多类分类架构 案例&#xff1a;预测航天飞机…...

【回眸】牛客网刷刷刷!(七)——通信协议之 网络通讯

目录 前言 1、TCP/IP分层模型 2、ARP缓存 3、TCP 协议之所以提供可靠传输&#xff0c;不怕丢包、乱序的主要的原因是 4、以太网数据链路层MII/GMII/RMII/RGMII四种常用接口 5、在以太网通信协议LWIP中&#xff0c;数据包管理机构采用数据结构pbuf 分类包括 6、关于以太网…...

MySQL 安装配置

MySQL 安装配置 MySQL 是最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。 MySQL由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL…...

【0824作业】C++ 拷贝赋值函数、匿名对象、友元、常成员函数和常对象、运算符重载

一、思维导图 二、作业&#xff1a;实现关系运算符的重载 关系运算符重载 概念&#xff1a; 种类&#xff1a;>、>、< 、< 、 、!表达式&#xff1a;L#R (L表示左操作数&#xff0c;R表示有操作数&#xff0c;#表示运算符)左操作数&#xff1a;既可以是左值也可以…...

ubuntu 22.04 LTS openai triton 安装

第一种方法&#xff1a; pip install triton 第二种方法&#xff0c;安装最新的版本&#xff1a; pip install -U --index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/Triton-Nightly/pypi/simple/ triton-nightly 第三种方法&#xff1a; git c…...

Android SDK 上手指南||第七章 Java应用程序编程

第七章 Java应用程序编程 如果大家已经对Java非常熟悉&#xff0c;那么不妨直接忽略这部分内容。如果大家的技巧还存在局限或者对Java这种语言只闻其名&#xff0c;那么本文将为各位解答很多在Android开发当中经常遇到的问题。需要注意的是&#xff0c;这篇文章并不能作为Java…...

Vue 框架如何获取数组中的值?

在Vue框架中&#xff0c;获取数组中的值可以通过以下几种方式实现&#xff1a; 1、使用数组索引&#xff1a; 可以使用数组的索引来获取特定位置的值。在Vue中&#xff0c;可以通过在模板中使用差值表达式或指令来获取数组中的值。例如&#xff1a; <div>{{ myArray[0]…...

如何成立一家音频芯片/算法设计公司

一 如何成立一家音频芯片设计公司&#xff1f; 要成立一家音频芯片设计公司&#xff0c;可以按照以下步骤进行&#xff1a; 市场调研&#xff1a;了解音频芯片市场的需求和竞争情况&#xff0c;确定目标客户和定位。 制定商业计划&#xff1a;根据市场调研的结果&#xff0…...

用docker-compose搭建LNMP

docker-compose搭建LNMP 一、compose 的部署1.Docker Compose 环境安装 二、编写Docker Compose1.准备依赖文件,配置nginx2.配置mysql3.配置php4.编写docker-compose.yml5.执行6.查看 一、compose 的部署 &#xff08;1&#xff09;公司在实际的生产环境中&#xff0c;需要使用…...

JavaScript:基本语法(变量与函数的定义与使用)

文章目录 script 标签srcdefer 延迟加载 基本语法定义变量 与 使用变量基本类型typeof 查看变量类型复合类型数组类型定义对象类型定义 函数定义函数使用函数 script 标签 src 和scc一样可以内嵌也可以外src外引。 一般是推荐外引。 <script src"idx.js">&l…...

树莓派4B上安装Gitlab

参考连接&#xff1a; 树莓派上使用 GitLab 搭建专业 Git 服务 | 树莓派实验室 gitlab reconfigure 卡住 ruby_block[wait for redis service socket] action run_芹菜学长的博客-CSDN博客 以及用到了讯飞星火 系统版本信息 1.进入 giblab安装页面gitlab/gitlab-ce - Instal…...

JVM 之字节码(.class)文件

本文中的内容参考B站尚硅谷宋红康JVM全套教程 你将获得&#xff1a; 1、掌握字节码文件的结构 2、掌握Java源代码如何在JVM中执行 3、掌握一些虚拟机指令 4、回答一些面试题 课程介绍 通过几个面试题初始字节码文件为什么学习class字节码文件什么是class字节码文件分析c…...

neo4j函数

1、断言函数 1all()判断是否一个断言适用于列表中的所有元素2all()判断是否一个断言至少适用于列表中的一个元素3none()如果断言不适用于列表中的任何元素&#xff0c;则返回true4single()如果断言刚好只适用于列表中的某一个元素&#xff0c;则返回true5exists()如果数据局库…...

基于MCP协议构建AI与实时数据分析平台的安全连接方案

1. 项目概述&#xff1a;一个连接AI与实时数据的桥梁最近在折腾AI应用开发&#xff0c;特别是想让大语言模型&#xff08;LLM&#xff09;能“看到”并操作我自己的业务数据时&#xff0c;遇到了一个典型痛点&#xff1a;如何让AI安全、高效地访问那些实时变化的数据源&#xf…...

Diablo Edit2:暗黑破坏神2角色存档编辑器的深度技术解析与实战应用

Diablo Edit2&#xff1a;暗黑破坏神2角色存档编辑器的深度技术解析与实战应用 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit Diablo Edit2是一款功能强大的暗黑破坏神2角色存档编辑器&#xff0…...

CSL编辑器专业配置指南:解决学术引用样式编辑的技术难题

CSL编辑器专业配置指南&#xff1a;解决学术引用样式编辑的技术难题 【免费下载链接】csl-editor cslEditorLib - A HTML 5 library for searching and editing CSL styles 项目地址: https://gitcode.com/gh_mirrors/csl/csl-editor 学术论文写作中&#xff0c;引用格式…...

AI编程助手上下文优化实战:全景生成与角色化工作流降本增效

1. 项目概述&#xff1a;AI助手上下文优化的核心价值如果你和我一样&#xff0c;每天都在用Cursor、GitHub Copilot这类AI编程助手&#xff0c;那你肯定也遇到过这样的场景&#xff1a;写一个复杂功能时&#xff0c;助手要么“失忆”&#xff0c;忘了你项目里已有的工具函数&am…...

从开发视角看SSRF:你的PHP代码里,file_get_contents()和cURL用对了吗?附最新防御代码示例

PHP开发者必知&#xff1a;SSRF漏洞防御实战指南 1. 危险的PHP函数与常见业务场景 作为一名PHP开发者&#xff0c;你可能每天都在使用file_get_contents()和cURL这样的函数来处理远程资源。但你是否意识到&#xff0c;这些看似无害的函数可能成为攻击者入侵系统的跳板&#xff…...

命令行状态监控新思路:打造你的智能手表终端看板

1. 项目概述&#xff1a;一个为命令行爱好者打造的“腕上终端”如果你和我一样&#xff0c;是个重度依赖命令行&#xff08;CLI&#xff09;工作的开发者、运维或者极客&#xff0c;那你一定有过这样的体验&#xff1a;眼睛紧盯着屏幕&#xff0c;手指在键盘上飞舞&#xff0c;…...

Windows 10/11系统自建修复命令

PS C:\Users> DISM /Online /Cleanup-Image /RestoreHealth PS C:\Users> sfc /scannow...

从零训练专属风格模板:Midjourney V6.2风格参考+ControlNet协同工作流(含Stable Diffusion双向映射对照表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney风格参考功能详解 Midjourney 的风格参考&#xff08;Style Reference&#xff0c;简称 --sref&#xff09;是一项强大的图像一致性控制机制&#xff0c;允许用户将一张参考图的视觉风格&…...

解锁加密压缩包的终极武器:ArchivePasswordTestTool密码恢复方案全解析

解锁加密压缩包的终极武器&#xff1a;ArchivePasswordTestTool密码恢复方案全解析 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾…...

3分钟掌握音乐文件解密:NCM加密格式终极转换指南

3分钟掌握音乐文件解密&#xff1a;NCM加密格式终极转换指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾在网易云音乐下载了心爱的歌曲&#xff0c;却发现只能在官方App中播放&#xff1f;那些神秘的NCM格式文件就像被锁…...