0
点赞
收藏
分享

微信扫一扫

下一个更大元素

青鸾惊鸿 2022-04-30 阅读 126

下一个更大元素

使用单调栈 逆序遍历num2,得到nums2中当前位置处下一个更大的元素值。使用Map保存该元素对应的目标值

class Solution {
public:
    vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
        vector<int> res;
        std::stack<int> st;
        std::unordered_map<int, int> numMap;
        for(int i = nums2.size()-1; i>=0; --i)
        {
            while(!st.empty() && nums2[i]>=st.top())
            {
                st.pop();
            }
            if(!st.empty())
            {
                numMap.insert(make_pair(nums2[i],st.top()));
            }
            else
            {
                numMap.insert(make_pair(nums2[i],-1));
            }
            st.push(nums2[i]);
        }
        for(int i=0;i<nums1.size(); ++i)
        {
            res.push_back(numMap[nums1[i]]);
        }
        return res;
    }
};
举报

相关推荐

0 条评论