mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2026-02-02 18:39:09 +08:00
36 lines
1.0 KiB
Markdown
36 lines
1.0 KiB
Markdown
## 链接
|
||
https://leetcode-cn.com/problems/next-greater-element-i/
|
||
|
||
## 思路
|
||
|
||
两个数组逻辑还是有点绕
|
||
最好还是把所有情况列出来
|
||
|
||
```
|
||
class Solution {
|
||
public:
|
||
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
|
||
stack<int> st;
|
||
vector<int> result(nums1.size(), -1);
|
||
if (nums1.size() == 0) return result;
|
||
|
||
unordered_map<int, int> 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;
|
||
}
|
||
};
|
||
```
|