496.下一个更大的元素

刷算法题:

第一遍:1.看5分钟,没思路看题解

2.通过题解改进自己的解法,并且要写每行的注释以及自己的思路。

3.思考自己做到了题解的哪一步,下次怎么才能做对(总结方法)

4.整理到自己的自媒体平台。

5.再刷重复的类似的题目,根据时间和任务安排刷哪几个板块

6.用c++语言 都刷过一遍了 就刷中等

一.题目

nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。

给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。

对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素,那么本次查询的答案是 -1 。

返回一个长度为 nums1.length 的数组 ans 作为答案,满足 ans[i] 是如上所述的 下一个更大元素 。

示例 1:

输入:nums1 = [4,1,2], nums2 = [1,3,4,2].
输出:[-1,3,-1]
解释:nums1 中每个值的下一个更大元素如下所述:
- 4 ,用加粗斜体标识,nums2 = [1,3,4,2]。不存在下一个更大元素,所以答案是 -1 。
- 1 ,用加粗斜体标识,nums2 = [1,3,4,2]。下一个更大元素是 3 。
- 2 ,用加粗斜体标识,nums2 = [1,3,4,2]。不存在下一个更大元素,所以答案是 -1 。

示例 2:

输入:nums1 = [2,4], nums2 = [1,2,3,4].
输出:[3,-1]
解释:nums1 中每个值的下一个更大元素如下所述:
- 2 ,用加粗斜体标识,nums2 = [1,2,3,4]。下一个更大元素是 3 。
- 4 ,用加粗斜体标识,nums2 = [1,2,3,4]。不存在下一个更大元素,所以答案是 -1 。

提示:

  • 1 <= nums1.length <= nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 104
  • nums1nums2中所有整数 互不相同
  • nums1 中的所有整数同样出现在 nums2 中

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

二、反思

1.自己的解法

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {int m = nums1.size();int n = nums2.size();vector<int> res(m);for (int i = 0; i < m; ++i) {int j = 0;while (j < n && nums2[j] != nums1[i]) {++j;}int k = j + 1;while (k < n && nums2[k] < nums2[j]) {++k;}res[i] = k < n ? nums2[k] : -1;}return res;}
};作者:力扣官方题解
链接:https://leetcode.cn/problems/next-greater-element-i/solutions/1065517/xia-yi-ge-geng-da-yuan-su-i-by-leetcode-bfcoj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.题目的解法 

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {unordered_map<int,int> hashmap;//记录了nums2【i】的右边第一个大于本身的值stack<int> st;for (int i = nums2.size() - 1; i >= 0; --i) {int num = nums2[i];while (!st.empty() && num >= st.top()) {//保证在栈顶每次都能找到最大的第一个值。st.pop();}hashmap[num] = st.empty() ? -1 : st.top();//这个代码块的作用是找到i右边最小或者最大值st.push(num);//用于更新栈顶,如果比左边的值小,就会被弹走}vector<int> res(nums1.size());for (int i = 0; i < nums1.size(); ++i) {res[i] = hashmap[nums1[i]];}return res;}
};作者:力扣官方题解
链接:https://leetcode.cn/problems/next-greater-element-i/solutions/1065517/xia-yi-ge-geng-da-yuan-su-i-by-leetcode-bfcoj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 3.思路的异同

三.进步的地方

单调栈还是很有说法的啊。 

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

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

相关文章

【Makefile】Makefile 编译 Keil 工程(Linux 环境)

本文使用的开发板为 stm32f103C8T6&#xff0c;使用的驱动库为stm32标准库。 目录 一、软件下载 1、stm32 标准库 2、arm-none-eabi 工具链 3、烧录器 二、Keil 工程改造 1、Keil 工程 2、基本 Makefile 工程 3、添加启动文件 4、添加链接脚本 5、去掉 core_cm3.c 三…

05Django项目--前端公共文件和其他html文件的适配

对应视频链接点击直达 Django项目--前端公共文件和其他html文件的适配 对应视频链接点击直达前端页面准备Pubilc页面设置 OVER&#xff0c;不会有人不会吧不会的加Q1394006513结语 接着上一节 前端页面准备 为了方便大家更好的复制&#xff0c;我把整个项目及templates文件夹和…

Buffer Pool中是如何管理Page页

Page页分类:在BP的底层采用的是链表数据结构管理Page。Page根据状态可以分为3中类型 1)free Page:空闲Page&#xff0c;未被使用的Page。 2)clean Page:被使用的Page&#xff0c;但是数据没有修改过。 3)dirty Page:脏页&#xff0c;被使用过的Page&#xff0c;并且数据被修…

FastDfs快速安装和数据迁移同步。Ubuntu环境

一&#xff1a;防火墙 ufw status 二&#xff1a;下载 分别是&#xff08;环境依赖&#xff0c;网络模块依赖&#xff0c;安装包&#xff09; git clone https://github.com/happyfish100/libfastcommon.git git clone https://github.com/happyfish100/libserverframe.git …

nginx服务器执行的过程

一:打包 1.打包前的分析 文件路径下npm run preview -- --report 生成打包之后的内容 2.解决有些内容体积过大的问题 1.删除有些不使用但是占用较多的,将main.js上import删除,打包时不会有 2.不能删除但是内容较大的 vue.config.js文件夹下 externals: { vue: Vue,…

Jenkins动态slave

目录 所需环境 安装nfs 部署Jenkins 安装插件 ​编辑添加凭据 配置动态slave 连接kubernetes集群 ​编辑配置Jenkins地址 ​编辑配置Pod模板 ​编辑确认代理端口 创建任务测试 在当今软件开发生命周期中&#xff0c;持续集成/持续部署&#xff08;CI/CD&#xff09;已…

Selenium 异常类详解

在使用 Selenium 进行 Web 自动化测试时&#xff0c;经常会遇到各种异常情况。了解这些异常并掌握如何处理它们对于编写稳定可靠的测试脚本至关重要。本文将详细介绍 Selenium 中常见和不常见的异常类及其使用场景。 Selenium 常见异常类列表 序号异常类基类描述1selenium.co…

告别死记硬背!这一AI学习法让你和别人的差距越拉越大

文章目录 一、初步提问二、需求分析三、提示词初步设计四、提示词迭代五、需求扩展 今天我要分享的是如何利用GPT来辅助学习和理解各种繁琐、复杂、抽象的教材内容或者冗长的片段。 今天将以《操作系统教程》中的内存管理章节为例进行讲解。 本次采用的大模型是通义千问2.5&am…

STM32---蓝牙模块ECB02(从机模式_与手机通信)

目录 1、ECB02 重点 参数 2、引脚说明 3、AT指令使用重点 4、使用USB转TTL模块测试 5、STM32开发板的接线 6、STM32通信代码 7、手机小程序 连接ECB02 1、ECB02 重点 参数 蓝牙协议&#xff1a; 5.2主从模式&#xff1a;主、从一体&#xff0c;可设置睡眠模式&#xff…

职业规划与指导

文章目录 职业规划与指导2024心得2405架构师的必经之路 职业规划与指导2024 心得 但凡工作中&#xff0c;能够搞明白的就在工作中把原理使用等等搞明白&#xff0c;但凡工作中搞不明白的&#xff0c;业余也不用花时间在去搞明白&#xff0c;因为工作中都搞不明白的事&#xf…

mac远程桌面连接工具:Microsoft Remote Desktop正式版

Microsoft Remote Desktop 是一款由微软开发的远程桌面控制软件。它允许用户通过互联网连接到远程计算机&#xff0c;从而可以在本地计算机上访问和控制远程计算机的桌面、文件和应用程序。 下载地址&#xff1a;https://www.macz.com/mac/1004.html?idOTI2NjQ5Jl8mMjcuMTg2Lj…

x264 码率控制 MBtree 原理:mbtree_propagate_list 函数分析

mbtree_propagate_list 函数功能 是视频编码中宏块树传播算法的一部分,用于在编码决策过程中更新参考帧的传播成本。这个过程特别关注于如何处理运动向量(Motion Vectors, MVs)以及如何根据这些MVs对参考帧的成本进行加权,从而影响最终的编码选择。 该函数作为x264编码器…

深入理解Linux系统管理与网络配置高级指南

深入理解Linux系统管理与网络配置高级指南 目录 深入理解Linux系统管理与网络配置高级指南 一、Linux文件系统管理 二、Linux进程管理 三、Linux系统管理 四、Linux网络管理 五、Linux磁盘管理 一、Linux文件系统管理 1.1 文件和目录操作 在Linux中&#xff0c;一切皆…

React 组件三大核心之 ref

文章目录 用法React.createRef()useRef Hook 注意 ref 是 React 中的一个重要概念&#xff0c;它用于访问和操作 DOM 元素或者类组件实例。 在React中&#xff0c;ref 提供了一种方式&#xff0c;允许我们访问DOM节点或在render方法中创建的React元素。这对于执行DOM操作、读取…

Servlet的request对象

request对象的继承关系 1.HttpServletRequest接口继承了ServletRequest接口&#xff0c;对其父接口进行了扩展&#xff0c;可以处理满足所有http协议的请求 2.HttpServletRequest和ServletRequest都是接口&#xff0c;不能创建对象&#xff0c;因此在tomcat底层定义实现类并创…

modbus开源库libmodbus的C语言使用记录(实现简单的modbus主机/丛机程序,解决libmodbus库安装出现的问题)

libmodbus简介 libmodbus 是一个开源的、跨平台的C库,用于实现Modbus通讯协议。它支持Modbus RTU(RS-232/485)和Modbus TCP协议,可以使开发者方便地在项目中集成Modbus通讯功能。libmodbus的设计目标是简单、灵活和高效,适用于各种大小的嵌入式和桌面应用。 编译运行测试…

filter is not a function

"filter is not a function" 这个错误通常意味着你尝试在一个不支持 .filter() 方法的对象上调用这个方法。在JavaScript中&#xff0c;.filter() 是一个数组&#xff08;Array&#xff09;的内置方法&#xff0c;用于创建一个新数组&#xff0c;其包含通过所提供函数…

ffpmeg windows WSl 编译so

1.NDK 环境变量配置 2.git clone ffpmeg 3.创建脚本&#xff08;需先下载gcc编译器&#xff09; 64位脚本如下 #!/bin/bashexport NDK/home/test/ndk20 #这里配置先你的 NDK 路径 TOOLCHAIN$NDK/toolchains/llvm/prebuilt/linux-x86_64function build_android {./configure \ …

鸿蒙ArkUI-X跨平台技术:【SDK结构介绍】

ArkUI-X SDK目录结构介绍 简介 本文档配套ArkUI-X&#xff0c;将OpenHarmony ArkUI开发框架扩展到不同的OS平台&#xff0c;比如Android和iOS平台&#xff0c;让开发者基于ArkUI&#xff0c;可复用大部分的应用代码&#xff08;UI以及主要应用逻辑&#xff09;并可以部署到相…

Linux 磁盘管理命令 mdadm:RAID设置工具

文章目录 3.Linux 磁盘管理命令3.25 mdadm:RAID设置工具案例练习 3.Linux 磁盘管理命令 3.25 mdadm:RAID设置工具 作用&#xff1a;mdadm 是 Linux 下用于管理软件磁盘阵列的工具。 用法&#xff1a;mdadm [模式] [设备] [选项] 模式有如下 7 种: Create&#xff1a;使用空闲…