# 496.下一个更大元素I

## 问题描述
[496.下一个更大元素I](https://leetcode.cn/problems/next-greater-element-i/)

## 解题思路
本题利用[单调栈(monotone stack)](https://zwyyy456.vercel.app/zh/posts/tech/monotone-stack/)来遍历`nums2`，并且利用`unordered_map`来存储`nums1`中元素和对应的结果。

## 代码
```cpp
class Solution {
  public:
    vector<int> nextGreaterElement(vector<int> &nums1, vector<int> &nums2) {
        unordered_map<int, int> umap;
        stack<int> stk;
        for (int i = 0; i < nums1.size(); i++) {
            umap.insert({nums1[i], -1});
        }
        stk.push(0);
        for (int i = 1; i < nums2.size(); i++) {
            while (!stk.empty() && nums2[i] > nums2[stk.top()]) {
                if (umap.find(nums2[stk.top()]) != umap.end()) {
                    umap[nums2[stk.top()]] = nums2[i];
                }
                stk.pop();
            }
            stk.push(i);
        }
        vector<int> res(nums1.size(), -1);
        for (int i = 0; i < nums1.size(); i++) {
            res[i] = umap[nums1[i]];
        }
        return res;
    }
};
```
