## 链接 https://leetcode-cn.com/problems/next-greater-element-i/ ## 思路 两个数组逻辑还是有点绕 最好还是把所有情况列出来 ``` class Solution { public: vector nextGreaterElement(vector& nums1, vector& nums2) { stack st; vector result(nums1.size(), -1); if (nums1.size() == 0) return result; unordered_map umap; // key:下表元素,value:下表 for (int i = 0; i < nums1.size(); i++) { umap[nums1[i]] = i; } st.push(0); for (int i = 1; i < nums2.size(); i++) { while (!st.empty() && nums2[i] > nums2[st.top()]) { if (umap.count(nums2[st.top()]) > 0) { // 看map里是否存在这个元素 int index = umap[nums2[st.top()]]; // 根据map找到nums2[st.top()] 在 nums1中的下表 result[index] = nums2[i]; } st.pop(); } st.push(i); } return result; } }; ```