还是利用单调递减栈
class Solution {
public:
vector<int> nextGreaterElements(vector<int>& nums) {
int n = nums.size();
stack<int> sta;
vector<int> res(n,-1);
for(int i = 0;i< 2*n;i++)
{
while(!sta.empty() && nums[i%n]>nums[sta.top()])
{
res[sta.top()] = nums[i%n]; // 下标取模实现循环遍历数组
sta.pop(); // 循环找到真正的下一个更大元素, 更新结果数组
}
sta.push(i%n);
}
return res;
}
};