class Solution {
public:
vector<int> nextGreaterElement(vector<int>& findNums, vector<int>& nums) {
stack<int> s;
unordered_map<int,int> greater;
for(int i=0;i<nums.size();i++){
while(!s.empty() && nums[i]>s.top()){
greater[s.top()] = nums[i];
s.pop();
}
s.push(nums[i]);
}
vector<int> res;
for(int j=0;j<findNums.size();j++){
int great;
if(greater.find(findNums[j])!=greater.end())
great = greater[findNums[j]];
else
great =-1;
res.push_back(great);
}
return res;
}
};