前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeetCode 503. 下一个更大元素 II(单调栈)

LeetCode 503. 下一个更大元素 II(单调栈)

作者头像
Michael阿明
发布于 2020-07-13 07:18:33
发布于 2020-07-13 07:18:33
53100
代码可运行
举报
运行总次数:0
代码可运行

1. 题目

给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。

代码语言:javascript
代码运行次数:0
运行
复制
示例 1:

输入: [1,2,1]
输出: [2,-1,2]
解释: 第一个 1 的下一个更大的数是 2;
数字 2 找不到下一个更大的数; 
第二个 1 的下一个最大的数需要循环搜索,结果也是 2

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/next-greater-element-ii

2. 解题

2.1 朴素解法

  • 模拟题意查找
代码语言:javascript
代码运行次数:0
运行
复制
class Solution {
public:
    vector<int> nextGreaterElements(vector<int>& nums) {
        int n = nums.size(), i, j, count = 0;
        bool found;
        vector<int> ans;
        for(int i = 0; i < n; i++)
        {
        	count = n-1;
        	found = false;
        	j = i+1;
        	if(j == n)
        		j = 0;
        	while(count--)
        	{
        		if(nums[j] > nums[i])
        		{
        			ans.push_back(nums[j]);
        			found = true;
        			break;
        		}
        		if(++j == n)
        			j = 0;
        	}
        	if(!found)
        		ans.push_back(-1);
        }
        return ans;
    }
};

2.2 单调栈解题

别人的笔记介绍单调栈

代码语言:javascript
代码运行次数:0
运行
复制
class Solution {
public:
    vector<int> nextGreaterElements(vector<int>& nums) {
        int n = nums.size(), i;
        vector<int> ans(n,-1);
        stack<int> stk;
        for(int i = 0; i < 2*n; i++)
        {
        	while(!stk.empty() && nums[i%n]> nums[stk.top()])
        	{
        		ans[stk.top()] = nums[i%n];
        		stk.pop();
        	}
        	if(i < n)
        		stk.push(i);
        }
        return ans;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Linux 性能调优之CPU上下文切换
99%的焦虑都来自于虚度时间和没有好好做事,所以唯一的解决办法就是行动起来,认真做完事情,战胜焦虑,战胜那些心里空荡荡的时刻,而不是选择逃避。不要站在原地想象困难,行动永远是改变现状的最佳方式
山河已无恙
2024/09/12
9580
Linux 性能调优之CPU上下文切换
Linux BPF性能分析之基于BCC工具清单检查
不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
山河已无恙
2024/04/11
3000
Linux BPF性能分析之基于BCC工具清单检查
Linux 性能调优之硬件资源监控
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2023/11/28
7370
Linux 性能调优之硬件资源监控
从源头解决内存泄漏问题:全面解析内存泄漏检测与修复技术
内存泄漏是在没有自动gc的编程语言里面经常发生的问题;因为没有gc,所以分配的内存需要程序自己调用释放。其核心是调用分配与释放没有符合开闭原则,没有配对,形成了有分配,没有释放的指针,从而产生了内存泄漏。 例如:
Lion 莱恩呀
2024/10/13
7740
从源头解决内存泄漏问题:全面解析内存泄漏检测与修复技术
Linux如何调试内存泄漏
内存泄漏是指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。
C语言与CPP编程
2020/12/02
6.7K0
Linux 进程内存监控:Linux 内存调优之进程内存深度监控
这里分析的工具主要是原生工具,后面还会分享一些 BPF 相关的内存观察工具以及系统内存的全局监控
山河已无恙
2025/04/13
9480
Linux 进程内存监控:Linux 内存调优之进程内存深度监控
Linux 性能调优之资源限制(ulimit&Cgroup)
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2023/11/07
1.6K0
Linux 性能调优之资源限制(ulimit&Cgroup)
Linux 系统内存监控:Linux 内存调优之系统内存全面监控
所谓百年功名、千秋霸业、万古流芳,与一件事情相比,其实算不了什么。这件事情就是——用你喜欢的方式度过一生。 ----《明朝那些事儿》
山河已无恙
2025/04/13
4370
Linux 系统内存监控:Linux 内存调优之系统内存全面监控
关于 Linux中系统调优的一些笔记
我突然又明白,死亡是聪明的兄长,我们可以放心地把自己托付给他,他会知道在我们有所准备的适当时刻前来。我也突然懂得,原来痛苦、失望和悲愁不是为了惹恼我们,使我们气馁或者无地自容;它们的存在,是为了使我们心智成熟,臻于完善。—赫尔曼·黑塞《彼得·卡门青》
山河已无恙
2023/03/02
1K0
关于 Linux中系统调优的一些笔记
内存泄漏排查攻略之:Show me your Memory
java 语言有个神奇的地方,那就是你时不时会去关注下内存。(当然了,任何牛逼的同学都应该关注内存)
烂猪皮
2021/04/07
1.1K0
内存泄漏排查攻略之:Show me your Memory
Linux性能调优之用电调优(Power Usage Tuning)
管理与高CPU活动相关的功耗和废热是数据中心运行的主要关注点之一。对于需要最大限度延长电池寿命的移动设备来说,最大限度地减少功耗也越来越重要。
山河已无恙
2023/01/30
4.7K0
Linux性能调优之用电调优(Power Usage Tuning)
linux后台开发常用调试工具
一、编译阶段 nm 获取二进制文件包含的符号信息 strings 获取二进制文件包含的字符串常量 strip 去除二进制文件包含的符号 readelf 显示目标文件详细信息 objdump 尽可能反汇编出源代码 addr2line 根据地址查找代码行 二、运行阶段 gdb 强大的调试工具 ldd 显示程序需要使用的动态
李海彬
2018/03/23
4K0
AK47所向披靡,内存泄漏一网打尽
青囊,喜欢运动T恤加皮裤的非典型程序猿。此时,他正目不转睛注视着屏幕上一行行的代码,内存泄漏这个问题已经让他茶饭不思两三天了,任凭偌大的雨滴捶打着窗户也无动于衷。就这么静悄悄地过了一会儿,突然间,他哼着熟悉的小曲,仿佛一切来的又那么轻松又惬意。
233333
2021/06/10
7420
AK47所向披靡,内存泄漏一网打尽
Linux性能调优之使用BPF工具观测CPU性能指标
喜欢文字的人,大多敏感且心软,忽然不快乐忽然被回忆揪住心脏忽然沉默到泪流。或许是内心孤独的缘故,轻易便可从他人的故事里看到自己的影子所以,悲伤总要比别人多一半。
山河已无恙
2024/10/21
5740
Linux性能调优之使用BPF工具观测CPU性能指标
[强网杯2021-线上赛] Pwn方向writeup
堆有rwx权限,下标溢出写got函数为堆地址,在两个堆块上拼接shellcode调用read读入shellcode进行orw拿flag
赤道企鹅
2022/08/01
6760
宋牧春: Linux内核内存corruption检查机制KASAN实现原理
http://www.wowotech.net/memory_management/424.html
Linux阅码场
2019/10/08
2.4K0
宋牧春: Linux内核内存corruption检查机制KASAN实现原理
如何使用eBPF监控Linux内存 OOM killer:Linux内存调优之eBPF监控内存 OOM killer 事件
OOM Killer 事件: OOM Killer(Out-Of-Memory Killer)是内核在系统内存严重不足时触发的紧急机制,通过终止进程释放内存以维持系统稳定,每个进程有一个 OOM 相关的分数,终止进程的时候基于这个分数进行处理,有一些内核参数可以控制 OOM Killer 的行为,生产中考虑QOS可以进行相关的配置,当然更合理的方式是使用Cgroup对不同进程的内存资源进行限制,这里不多讲,包括 OOM killer 打分机制等等感兴趣的小伙伴可以了解下。
山河已无恙
2025/05/19
1970
如何使用eBPF监控Linux内存 OOM killer:Linux内存调优之eBPF监控内存 OOM killer 事件
CTF PWN之house of orange
题目链接:https://github.com/giantbranch/CTF_PWN/tree/master/other/houseoforange
用户1423082
2024/12/31
590
CTF PWN之house of orange
Linux 性能调优之虚拟化调优
不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
山河已无恙
2024/02/27
4370
Linux 性能调优之虚拟化调优
eBPF 入门实践教程十六:编写 eBPF 程序 Memleak 监控内存泄漏
eBPF(扩展的伯克利数据包过滤器)是一项强大的网络和性能分析工具,被广泛应用在 Linux 内核上。eBPF 使得开发者能够动态地加载、更新和运行用户定义的代码,而无需重启内核或更改内核源代码。
云微
2023/08/14
1.3K0
相关推荐
Linux 性能调优之CPU上下文切换
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档