class Solution {
public:
vector<int> nextGreaterElements(vector<int>& nums) {
vector<int> a;
if(nums.size()==0)
return a;
for(int i=0;i<=nums.size()-1;i++)
a.push_back(nums[i]);
for(int i=0;i<=nums.size()-1;i++)
a.push_back(nums[i]);
vector<int>res(a.size(),-1);
stack<int> s;//存下标
for(int i=0;i<=a.size()-1;i++)
{
if(s.empty()||a[i]<=a[s.top()])
s.push(i);
else
{
res[s.top()]=a[i];
s.pop();
while(!s.empty()&&a[i]>a[s.top()])
{
res[s.top()]=a[i];
s.pop();
}
s.push(i);
}
}
for(int i=0;i<=nums.size()-1;i++)
res.pop_back();
return res;
}
};