[栈] leetcode 1019 Next Greater Node In Linked List

Posted fish1996

tags:

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

problem:https://leetcode.com/problems/next-greater-node-in-linked-list/

        维护递减的单调栈。这道题对象是链表,不像数组可以快速通过下标索引,所以比较方便的做法是在栈中同时记录数字和对应的下标,并且默认填0,如果找到了比它大的第一个数,再修改下标对应的数字。

/**
 * Definition for singly-linked list.
 * struct ListNode 
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) 
 * ;
 */
class Solution 
public:
    vector<int> nextLargerNodes(ListNode* head) 
        stack<pair<int,int>> sta;
        vector<int> res;
        int i = 0;
        ListNode* cur = head;
        while(cur)
        
            while(!sta.empty() && cur->val > sta.top().first)
            
                int idx = sta.top().second;
                sta.pop();
                res[idx] = cur->val;
            
            sta.push( cur->val, i++);
            res.push_back(0);
            cur = cur->next;
        
        
        return res;
    
;

 

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