[栈] leetcode 503 Next Greater Element II

Posted fish1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[栈] leetcode 503 Next Greater Element II相关的知识,希望对你有一定的参考价值。

problem:https://leetcode.com/problems/next-greater-element-ii/

        一道比较简单的单调队列题目。不过由于题目要求是循环的,需要两个pass,第二个pass处理循环生效的next greater,同时需要把下标已经超出范围的队首数据及时pop出来。

class Solution 
public:
    vector<int> nextGreaterElements(vector<int>& nums) 
    
        deque<int> q;
        vector<int> res(nums.size(), -1);
        for (int i = 0; i < nums.size(); i++) 
        
            while (!q.empty() && nums[i] > nums[q.back()]) 
            
                res[q.back()] = nums[i];
                q.pop_back();
            
            q.push_back(i);
        
        for (int i = 0; i < nums.size(); i++) 
        
            while (!q.empty() && nums[i] > nums[q.back()]) 
            
                res[q.back()] = nums[i];
                q.pop_back();
            
            while (!q.empty() && q.front() <= i)q.pop_front();
            if (q.empty())break;
        
        return res;
    
;

 

以上是关于[栈] leetcode 503 Next Greater Element II的主要内容,如果未能解决你的问题,请参考以下文章

leetcode496 - Next Greater Element I - easy && leetcode503 - Next Greater Element II - medi

Leetcode 503. Next Greater Element II JAVA语言

LeetCode 503. 下一个更大元素 II

[栈] leetcode 1019 Next Greater Node In Linked List

LeetCode 430 扁平化多级双向链表[递归 栈] HERODING的LeetCode之路

Leetcode 1019. Next Greater Node In Linked List