Day58力扣打卡

打卡记录

下一个更大元素 IV(单调栈 x2)

链接

python 复制代码
class Solution:
    def secondGreaterElement(self, nums: List[int]) -> List[int]:
        ans = [-1] * len(nums)
        s = []
        t = []
        for i, x in enumerate(nums):
            while t and nums[t[-1]] < x:
                ans[t.pop()] = x  # t 栈顶的下下个更大元素是 x
            j = len(s) - 1
            while j >= 0 and nums[s[j]] < x:
                j -= 1  # s 栈顶的下一个更大元素是 x
            t += s[j + 1:]  # 把从 s 弹出的这一整段元素加到 t
            del s[j + 1:]  # 弹出一整段元素
            s.append(i)  # 当前元素(的下标)加到 s 栈顶
        return ans
相关推荐
naruto_lnq1 分钟前
用Python批量处理Excel和CSV文件
jvm·数据库·python
星火开发设计3 分钟前
共用体 union:节省内存的特殊数据类型
java·开发语言·数据库·c++·算法·内存
求梦82015 分钟前
【力扣hot100题】合并两个有序链表(22)
算法·leetcode·链表
b20772119 分钟前
Flutter for OpenHarmony 身体健康状况记录App实战 - 提醒设置实现
python·flutter·macos·cocoa·harmonyos
2301_8223650324 分钟前
数据分析与科学计算
jvm·数据库·python
河北小博博26 分钟前
分布式系统稳定性基石:熔断与限流的深度解析(附Python实战)
java·开发语言·python
dcmfxvr28 分钟前
adwawd
算法
黄连升29 分钟前
Python学习第二天,系统学习基础
python·学习
西红市杰出青年35 分钟前
CSS 选择器详细教程:原理、语法、方向/“轴”与实战
css·python
tudficdew36 分钟前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python