当前位置: 首页 > news >正文

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

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

题目

在这里插入图片描述

题目解析及思路

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

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

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

在这里插入图片描述

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

参考题解

代码

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;
    }
};

相关文章:

  • 千峰React:函数组件使用(3)
  • 虚实结合双机导航-gazebo-ros
  • Nacos + Dubbo 实现微服务的Rpc调用
  • # GaussDB 学习进阶路线-基础篇:从零入门到核心操作实战指南
  • 中国历代政治得失读书笔记
  • 【Win10】Anaconda + Pycharm 环境搭建教程
  • Linux下安装Nginx服务及systemctl方式管理nginx详情
  • Linux 基本开发工具的使用(yum、vim、gcc、g++、gdb、make/makefile)
  • 前景光明的Goggles($GOGLZ)登陆SONIC
  • FreeRTOS系列---信号量详解
  • ktransformers 上的 DeepSeek-R1 671B open-webui
  • Jmeter插件下载及安装
  • 【HTML— 快速入门】HTML 基础
  • word中对插入的图片修改背景色
  • 机器人“战场”:创新、落地与未来
  • 如何通过 Deepseek + Dify 实现零成本部署本地智能体
  • DP学习第七篇之最小路径和
  • 安宝特方案 | 电力行业的“智能之眼”,AR重新定义高效运维!
  • 计算机网络:应用层 —— 电子邮件
  • 微信小程序组件封装与复用:提升开发效率
  • 西安建设工程信息网是谁开发的/360优化大师官网
  • 陕西网站开发公司哪家好/口碑营销策略
  • 东莞网站开发哪家好/北京网站推广机构
  • 专门做优选的网站/网站快速优化排名
  • 欧洲站vat激活/淘宝代运营公司十大排名
  • 网站开发实习日记/百度问一问人工客服怎么联系