这道题要好好看题,nums1是nums2的子集,而且nums2中无重复元素
class Solution {
public:
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
if(!nums1.size() || !nums2.size()) return vector<int>();
map<int, int> mp;
stack<int> stk;
for(int i = 0; i < nums2.size(); i++)
{
while(stk.size() && stk.top() < nums2[i])
{
mp[stk.top()] = nums2[i];
stk.pop();
}
// if(!stk.size() || stk.top() > nums2[i])
stk.push(nums2[i]);
}
while(stk.size())
{
mp[stk.top()] = -1;
stk.pop();
}
vector<int> res;
for(auto x: nums1)
{
res.push_back(mp[x]);
}
return res;
}
};