leetcode如何解决下一个更大元素问题
发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,小编给大家分享一下leetcode如何解决下一个更大元素问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、题目内容给定
千家信息网最后更新 2024年12月12日leetcode如何解决下一个更大元素问题
小编给大家分享一下leetcode如何解决下一个更大元素问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一、题目内容
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。
示例 1:
输入: [1,2,1]
输出: [2,-1,2]
解释: 第一个 1 的下一个更大的数是 2;
数字 2 找不到下一个更大的数;
第二个 1 的下一个最大的数需要循环搜索,结果也是 2。
注意: 输入数组的长度不会超过 10000。
二、解题思路
将列表nums二次拼接,然后res存储每个数字下一个更大的元素,s存储每个元素的下标;
当前元素(s中栈顶对应的nums元素的下一个)大于s中栈顶对应的nums元素,res对应的s栈顶下标的下一个更大的元素为当前元素,s弹出栈顶下标;
s只存储nums长度的下标,而不是二次拼接之后的数组下标;
三、代码
class Solution: def nextGreaterElements(self, nums: list) -> list: res = [-1 for _ in range(len(nums))] s = [] two_nums = nums + nums for i in range(len(two_nums)): while s and nums[s[-1]] < two_nums[i]: res[s[-1]] = two_nums[i] # 当前元素(s中栈顶对应的nums元素的下一个)大于s中栈顶对应的nums元素 s.pop() # pop的是下标 # i大于nums的长度了就不往s里添加下标了 if i < len(nums): s.append(i) return resif __name__ == '__main__': s = Solution() nums = [1, 2, 1] ans = s.nextGreaterElements(nums) print(ans)
以上是"leetcode如何解决下一个更大元素问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
元素
下标
数组
数字
内容
篇文章
长度
存储
循环
输出
问题
搜索
输入
最大
不怎么
代码
大部分
思路
意味
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
我的世界服务器死亡掉经验
如何将账号转到另外一个服务器
华为服务器管理命令
数据库连接地址
学习计算机网络技术的优势
软件开发要多少圈
地理空间数据库数据文件
怎样打开虚拟机中的dns服务器
dab格式转com的软件开发
央行有云服务器吗
宜都市网络安全监管平台
数据库有序表
连接数据库jar
路由器ssr服务器
法律数据库查找指南
培训网络安全就业
国内软件开发类专科院校
服务器管理器的使用
软件开发的组织和角色分工
人工智能网络技术教学
网络安全分保和等保的区别
mq配置数据库连接
央行有云服务器吗
arcgis数据框转数据库
网络技术批发价格
mysql数据库操作界面
循环读取数据库
网络安全承诺书300字单位
底层软件和上位机软件开发
网络安全的段落有哪些