力扣2454. 下一个更大元素 IV

力扣2454. 下一个更大元素 IV

题目

题目解析及思路

题目要求对于每个数,找到右边比它大的第二个数,并记录在ans数组中

如果是右边第一个大的,就用一个递减栈即可,栈顶元素如果<当前元素则弹出

第二个大数就要利用弹出的栈顶元素,再开一个栈将弹出的元素存下来

当进来一个新数时跟t栈栈顶元素比较,如果x > t.top() 则t.top()对应的元素的answer值为x

参考题解

代码

cpp 复制代码
class Solution {
public:
    vector<int> secondGreaterElement(vector<int>& nums) {
        int n = nums.size();
        vector<int> ans(n,-1),s,t;
        for(int i=0;i<n;i++){
            int x = nums[i];
            //新数先与t栈栈顶元素比较
            while(!t.empty() && nums[t.back()] < x){
                ans[t.back()] = x;
                t.pop_back();
            }
            int j = s.size();
            //不满足条件的弹出s栈
            while(j && nums[s[j-1]] < x){	`	
                j --;
            }
            //因为s栈和t栈都是递减栈,所以直接整个移过去就行
            t.insert(t.end(),s.begin()+j,s.end());
            s.resize(j);
            s.push_back(i);
        }

        return ans;
    }
};
相关推荐
en.en..35 分钟前
C语言核心解析:#define与typedef本质区别
开发语言·c++·算法
YonyouHRSaaS2 小时前
AI视频面试系统定义、功能作用、品牌推荐、选择攻略
人工智能·面试·职场和发展·ai面试·视频面试·ai视频面试
zihan5182 小时前
理论:构建“基于客观事实、可量化、闭环自给自足”的个人操作系统
笔记·职场和发展·学习方法
wabs6663 小时前
关于二叉树【429.N叉树的层序遍历的思考】
数据结构·c++·算法·leetcode·二叉树
hetao17338373 小时前
2026-09-08 hetao1733837 的刷题记录
c++·算法
C++ 老炮儿的技术栈3 小时前
MFC CPtrArray的用法
开发语言·数据结构·c++·算法·mfc·c
小鱼爱吃草灬灬3 小时前
实时面试辅助排查清单:音频来源、问题输入与上下文
面试·职场和发展·音视频
weixin_446260853 小时前
CABAL:用于追踪同行评审中合谋投标影响的多智能体仿真框架
人工智能·算法·机器学习
不会就选b3 小时前
算法日常・每日刷题--<贪心>6
数据结构·算法·leetcode
青山木4 小时前
Hot 100 --- 跳跃游戏 II
java·数据结构·算法·leetcode·贪心算法