博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
下一个更大元素 I(LeetCode 496)
阅读量:5069 次
发布时间:2019-06-12

本文共 874 字,大约阅读时间需要 2 分钟。

题目

给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。

nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。

示例 1:

输入: nums1 = [4,1,2], nums2 = [1,3,4,2].

输出: [-1,3,-1]
解释:
对于num1中的数字4,你无法在第二个数组中找到下一个更大的数字,因此输出 -1。
对于num1中的数字1,第二个数组中数字1右边的下一个较大数字是 3。
对于num1中的数字2,第二个数组中没有下一个更大的数字,因此输出 -1。

思路

对于数组num2,利用栈找出每一个元素的下一个最大元素,将结果保存在哈希表中,(该数&下一个更大的元素的键值对),之后再遍历num1,如果hash表中没有当前元素,表示没有更大的元素,将-1push进结果数组,如果存在,就hash表中保存的下一个更大的数保存进结果数组。

其实mum1只是给出了部分打乱的值,相应的输出他们右边第一个比它们大的元素,其实并不影响这道题目的本质。

代码

class Solution {public:    vector
nextGreaterElement(vector
& findNums, vector
& nums) { vector
ans; stack
st; unordered_map
mp; for(int i=0;i

转载于:https://www.cnblogs.com/Bipolard/p/10173430.html

你可能感兴趣的文章
结对开发四~~
查看>>
关于多用户下自动编号的问题
查看>>
只显示重复数据,或不显示重复数据
查看>>
curl 命令详解
查看>>
javascript 对象简单介绍(一)
查看>>
linux正则表达式回忆记录
查看>>
Response.Buffer = True
查看>>
有趣的python range()函数
查看>>
SQLServer 学习笔记之超详细基础SQL语句 Part 8
查看>>
oracle中分组排序函数用法 - 转
查看>>
webpack执行命令失败之解决办法
查看>>
使用Jedis操作redis 缓存
查看>>
利用 python 实现对web服务器的目录探测
查看>>
实例详解机器学习如何解决问题
查看>>
STS搭建springMVC框架(三)
查看>>
[CF963E]Circles of Waiting[高斯消元网格图优化+期望]
查看>>
每天一个linux命令(6):rmdir 命令
查看>>
SNP密度分布模式
查看>>
Mysql中的一些基本操作
查看>>
JS,ATM代码
查看>>