C++ 单调栈 EL1S
class Solution {
public:
vector<int> nextGreaterElements(vector<int>& nums) {
stack<int> stk;
vector<int> res(nums.size(), -1);
for(int i = 0; i < nums.size() * 2; i++)
{
while(stk.size() && nums[stk.top()] < nums[i%nums.size()])
{
if(res[stk.top()] == -1)
{
res[stk.top()] = nums[i%nums.size()];
}
stk.pop();
}
stk.push(i%nums.size());
}
return res;
}
};