LeetCode [栈] 496.Next Greater Element I(C++和Python实现)

【Leetcode刷题笔记】栈 目录一、有效的括号二、最小栈 一、有效的括号 【题号】20 【题目描述】 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入: “([)]” 输出: false 示例 5: 输入: “{[]}” 输出: true 【常规解法】 1.初始化栈 S。 2.一次处理表 立即下载

496 Next Greater Element I [难度:简单] [哈希表/栈]

【题目】

You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of nums2. Find all the next greater numbers for nums1's elements in the corresponding places of nums2.

The Next Greater Number of a number x in nums1 is the first greater number to its right in nums2. If it does not exist, output -1 for this number.

Example 1:

Input: nums1 = [4,1,2], nums2 = [1,3,4,2].
Output: [-1,3,-1]
Explanation:
    For number 4 in the first array, you cannot find the next greater number for it in the second array, so output -1.
    For number 1 in the first array, the next greater number for it in the second array is 3.
    For number 2 in the first array, there is no next greater number for it in the second array, so output -1.

Example 2:

Input: nums1 = [2,4], nums2 = [1,2,3,4].
Output: [3,-1]
Explanation:
    For number 2 in the first array, the next greater number for it in the second array is 3.
    For number 4 in the first array, there is no next greater number for it in the second array, so output -1.

Note:

  1. All elements in nums1 and nums2 are unique.
  2. The length of both nums1 and nums2 would not exceed 1000. 

【题解C++】

先上个暴力解法吧~思路大概是这样:首先看清题意,不是同一位置右边的第一个最大值,而是同一个值右边的最大值!既然是靠值来联系两个数组,那第一个就会想到哈希表啦。先遍历大的数组,找到每个值对应的右边第一个最大值,将二者一个作为键一个作为值。最后再遍历第一个数组,push_back。

class Solution {
public:
    vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
        int i,j,hash[100000];
        vector<int> out;
        //建立映射表
        for(i=0;i<nums2.size();i++)
        {
            //当前值
            int tmp = nums2[i];
            for(j=i+1;j<nums2.size();j++)
            {    
                //如果右边有比当前值大的,存入哈希表
                if(nums2[j]>tmp)
                {
                    hash[tmp] = nums2[j];
                    break;
                }          
            }
            //否则将-1存入哈希表
            if(j==nums2.size())
                hash[tmp] = -1;
                
        }
        for(i=0;i<nums1.size();i++)
            out.push_back(hash[nums1[i]]);
        return out;
    }
};

接下来优化一下~既然是栈的合集,那就用栈来实现8!

class Solution {
public:
    vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
        vector<int> out;
        stack<int> st;
        map<int,int> mp;
        //倒着遍历大数组
        for(int i=nums2.size()-1;i>=0;i--)
        {
            //当前数组值
            int now = nums2[i];
            //只要栈不为空&&栈顶值不大于当前值,pop以寻找更大的值
            while(!st.empty()&&st.top()<=now)
                st.pop();
            //如果栈为空,说明没找到比当前值更大的,赋值为-1,否则赋值为栈顶值
            mp[now] = st.empty()?-1:st.top();
            //入栈
            st.push(now);
        }
        for(int i=0;i<nums1.size();i++)
            out.push_back(mp[nums1[i]]);
        return out;
    }
};

【解题Python】

Python用的暴力,思路和C++也是一样的。

class Solution:
    def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
        st = []
        for i in nums1:
            index = nums2.index(i)
            flag = 0
            for j in nums2[index:]:
                if j>i:
                    st.append(j)
                    flag = 1
                    break
            if not flag:
                st.append(-1)
        return st
            
KEGG数据库与KAAS工具:基因功能注释的实用指南 本文提供了使用KEGG数据库与KAAS工具进行基因功能注释的完整实用指南。详细阐述了如何从准备基因或蛋白序列开始,通过KAAS服务器获取KEGG Orthology(KO)编号,并解读注释结果。文章进一步介绍了如何利用KOBAS工具进行通路富集分析,将定性观察转化为定量洞察,并分享了提高注释准确率、处理大数据集及使用API等避坑技巧与高阶方法,为基因组学、转录组学研究者奠定坚实的数据分析基础。 阅读详情

相关推荐

H3C ACL的应用与配置1

SWHC1-acl-ipv4-adv-3000]rule 30 permit ip source 192.168.50.252 0 destination 192.168.70.252 0 //设置一条ID为30的过滤,允许源地址为 192.168.50.252 访问目的地址为192.168.70.252 的设备。高级ACL范围3000-3999:对源IP,目地IP,协议,端口号进行过滤。[SWHC1]acl number 3000 //创建高级ACL 3000。

weixin_41120428的博客 2425

Leetcode刷题笔记——栈篇

栈是一种先进后出的数据结构,栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表,这里我不做过多介绍,栈的应用和练习算是面试中的高频考点了,接下来看下我们来看一下Leetcode关于栈的常见面试题题型,每道题都附上了简单明了的python解法,大家重点关注算法思想即可。

qq_42898642的博客 1448

【日常小结】项目Modbus RTU 协议

Modbus RTU(远程终端) 协议 一、前言 最近因为码跺宽度测量项目推广升级,更换了摄像头(换成了基恩士摄像头)和光栅(换成了施莱格05LCM系列光栅),导致原来的程序用不了了,然而这个软件升级的任务落到了我身上,作为机械非科班出身的我要学习TCP和Modbus RTU通信协议,也算是自我突破了。本文只对Modbus/RTU/HEX 进行简单的小结。 二、Modbus Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻

weixin_39681471的博客 831

LeetCode刷题 --- 栈

图示,先push1,2,3,然后peek,栈1内元素转到栈2,后面只要栈2不为null,就可以执行pop和peek操作,如果为空,在吧元素从栈1转到栈2 就可以了。每次入栈的时候,判断当前元素和栈顶元素是否配对,如果配对,则弹出,如果不配对,则继续入栈。最后栈元素为空,则true,否则,为false。遇到左括号,则对应的右括号入栈,遇到右括号,则比较与栈顶元素是否一致,一致则出栈,继续,否则直接返回false。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(

qq_43325216的博客 693

WebRTC TURN协议初识及turnserver实践

但是TURN协议对服务器有很高的依赖,服务器在带宽和集群上有很大的压力,所以TURN协议通常是当作ICE协议中的一部分来使用。ChannelData message不使用STUN头部,而使用一个4字节的头部,包含了一个称之为信道号的值(channel number),每一个使用中的信道号都与一个特定的peer绑定,即作为对等端地址的一个记号。该relay地址是个公网地址,可以看作是客户端A在公网上的一个代理,任何想要联系A的客户端,只要将数据发送到A的relay地址就可以了。

yinshipin007的博客 566

如何下载era5数据?(两种方式)

供水利大数据云计算课程同学参考使用#

Camiel_sweet的博客 1万+

LeetCode栈和队列经典例题

这里有四道关于栈和队列的经典题型

m0_70811813的博客 1196

硅谷刷屏的ClawdBot,让Mac mini卖爆了!创始人爆料:一人开发、100% AI 写代码

这两天,个人 AI 助手 ClawdBot 席卷硅谷,国内外社交平台上全是关于它的讨论。 在试用后,网友们纷纷给出了很高的评价。“它是迄今为止最伟大的 AI 应用,相当于你 24 小时全天候专属 AI 员工。”Creator Buddy 创始人兼 CEO Alex Finn 盛赞道,“这就是他们 (Anthropic) 希望 Claude Cowork 呈现的样子。”

技术引领业务创新 1584

LeetCode算法(栈)

今天的练习是栈的相关题目,首先先解释一下什么是栈栈的基本思路是通过数组来存储栈中的元素,并通过栈顶指针指示栈顶元素在数组中的位置。栈具有以下特点:存储结构:使用数组作为底层存储结构,数组的每个元素存储栈中的一个元素;操作受限:栈只能从栈顶插入和删除元素,不支持在栈中间插入和删除元素;先进后出:栈的元素遵循 “先进后出” 的原则,即后插入的元素先被删除;顺序访问:只能从栈顶开始访问栈中的元素,不能从栈底或中间位置访问元素。在开始栈相关的算法前,我们需要一个栈,那么先来手写一个栈结构。

jiangyule的博客 776

串口通信的性能瓶颈分析:如何提高数据吞吐量和降低延迟

摘要: 串口通信在高频或大数据场景下存在吞吐量不足、延迟高、丢帧等问题,主要瓶颈包括波特率限制、缓冲区不足、CPU轮询延迟等。优化策略包括:提升波特率至硬件上限、增大缓冲区、采用异步I/O(如ReadAsync)减少线程切换,使用二进制协议降低解析开销。实时性方面需启用硬件流控、批量发送数据,并优化线程优先级。跨平台适配需区分Windows/Linux的缓冲区设置与异步机制。性能测试可通过吞吐量、延迟及回环测试验证优化效果,核心原则是硬件匹配、异步处理、协议优化与跨平台适配。(150字)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 980

发那科 Fanuc PLC 报文通讯,报文解析。附源程序

发那科 Fanuc PLC 报文通讯,最详细的发那科 PLC报文解析,不再局限在官方提供的库,也不用再局限在windows平台。

ITOfDragon的博客 1747

leetCode-栈类型详解

在刷题的时候遇到一个后缀表达式的题目,然后感觉该题是比较经典的栈应用类型的题目,正好借着该题,给大家聊一聊栈的用法,顺便解决了这道题。众所周知,栈是是一个先进后出的数据结构,利用该特性,在程序的设计中十分常见,如:括号匹配、表达式求值、在递归中的应用等都离不开栈这一数据结构。我下面一一给大家简单说一下。(PS:栈的数据结构我就不再此处赘述,大家可以自行了解)假设表达式中允许包含两种括号 :|直|括号和方括号 ,其嵌套 的顺序任意 即([]())或[([][ ])]等均为正确的格式,[(])或([())或((

zhiyikeji的博客 709

CANape a2l文件的编辑教程

编辑a2l文件

wsq119的博客 1万+

leetcode-496-Next Greater Element I

问题题目:[leetcode-496]思路简单题,仔细一点。代码class Solution { public: vector<int> nextGreaterElement(vector<int>& findNums, vector<int>& nums) { int sz1 = findNums.size(); int sz2 = nums.size();

Kang_TJU的博客 1822

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

496. Next Greater Element I

2017年3月6日   过了一个混沌的周末,最近的状态很不好,是时候该打起精神来了。刷题该步入正轨了,有时候想的太多反而虚度,不如按照自己当下想做的就去做好了。    今天很喜欢听一首歌《no one but you》   who would make the rules for the things that you do? --no one but you.    今天的题目:

Felicia的博客 380

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

[leetcode]: 496. Next Greater Element I

1.题目描述 You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of nums2. Find all the next greater numbers for nums1’s elements in the corresponding places of n

沐沐余风的专栏 472

[LeetCode] 496. Next Greater Element I 下一个较大的元素 I

You are given two arrays(without duplicates)nums1andnums2wherenums1’s elements are subset ofnums2. Find all the next greater numbers fornums1's elements in the corresponding places ofnums2. ...

weixin_30587025的博客 92

【LeetCode】496. Next Greater Element I 解题报告(Python & C++)

【LeetCode】496. Next Greater Element I 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/self-dividing-numbers/description/ 题目描述: You are given two arrays (without duplicates) nums1 an

负雪明烛 2377

496. Next Greater Element I(下一个更大的元素)

题目 You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of nums2. Find all the next greater numbers for nums1’s elements in the corresponding places of nums...

xunalove的博客 561

Leetcode_Stack --496. Next Greater Element I [easy]

You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of nums2. Find all the next greater numbers for nums1’s elements in the corresponding places of nums2. T...

Ling的博客 142

LeetCode_栈专题

接雨水一.题目二.思路三.代码 一.题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2: 输入:height = [4,2,0,3,2,5] 输出:9 提示: n == height.length 1

Acemanindisguise的博客 4363

Leetcode刷题03-栈

栈的基本知识,栈的手工实现、栈的基本应用、栈相关习题

1ncludeSteven 468

LeetCode讲解算法2-数据结构[栈和队列](Python版)

LeetCode讲解算法2-数据结构[栈和队列](Python版)

总裁余(余登武)博客 1426

LeetCode(1)-栈:符号匹配类问题

文章目录 一、LeetCode 20.有效的括号 二、LeetCode 844. 比较含退格的字符串 三、LeetCode 682. 棒球比赛 四、LeetCode 921. 使括号有效的最少添加 五、LeetCode 1021. 删除最外层的括号 六、LeetCode 1047. 删除字符串中的所有相邻重复项 本文是LeetCode刷题总结第一篇之栈的...

BoringError的博客 881

LeetCode——栈

Leetcode、Java、栈、单调栈

qq_44689664的博客 663

Leetcode Hot 100 —— 栈

Leetcode Hot 100 —— 栈

qq_52421969的博客 736

Leetcode练习之栈

Leetcode学习之栈栈简介堆栈的存储方法栈的基本操作栈的顺序存储基本描述栈的代码实现栈的链式存储栈的链式j结构代码 栈 简介 简单来说,栈是一种后进先出的线性表 线性表:具有前驱后续的线性关系,栈中元素按照a_{1},a_{2},…,a_{n} 栈顶的元素叫做an 后续先进原则 每次删除优先删除堆栈中当前的栈顶元素,即最后进入堆栈的元素。 堆栈的存储方法 顺序栈:堆栈的顺序存储结构,利用一组地址连续的存储单元依次存放自栈底到栈顶的元素,同时使用指针top指示栈顶元素在顺序栈的位置 链式栈:

hello_fengfeng的博客 501
上一篇: LeetCode [栈] 682.Baseball Game(C++和Python实现)
下一篇: PAT 1116 Come on! Let's C [逻辑题] [素数判断]
DayDreammerⅠ
博客等级 码龄9年 9粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值