力扣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;
    }
};
相关推荐
罗湖老棍子4 小时前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
文丑颜不良啊4 小时前
LeetCode201~225题目解析
java·leetcode
stsdddd6 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
CV爱数码7 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n7 小时前
【算法】约瑟夫环问题
java·算法
l1t7 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil2088 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE8 小时前
10.18【A】
算法
学顶教育8 小时前
学顶教育:公务员面试常见问题!
面试·职场和发展
LMT流氓兔8 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain