欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

代码随想录第50天|单调栈-496.下一个更大元素 I

最编程 2024-07-12 09:30:24
...

在这里插入图片描述
在这里插入图片描述

使用map映射索引号

class Solution {
public:
    vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
        unordered_map<int, int> mymap;
        for (int i = 0; i < nums1.size(); i++) {
            mymap[nums1[i]] = i;
        }

        stack<int> mystack;
        vector<int> res(nums1.size(), -1);
        mystack.push(0);
        for (int i = 1; i < nums2.size(); i++) {
            if (nums2[mystack.top()] >= nums2[i]) {
                mystack.push(i);//大的沉底
            } else {
                while (!mystack.empty() && nums2[mystack.top()] < nums2[i]) {
                    if (mymap.find(nums2[mystack.top()]) != mymap.end()) {
                        int index = mymap[nums2[mystack.top()]];
                        res[index] = nums2[i];
                    }              
                    mystack.pop();      
                }
                mystack.push(i);
            }            
        }
        return res;
    }
};