C++ 单调栈 EL1S

    1. class Solution {
    2. public:
    3. vector<int> nextGreaterElements(vector<int>& nums) {
    4. stack<int> stk;
    5. vector<int> res(nums.size(), -1);
    6. for(int i = 0; i < nums.size() * 2; i++)
    7. {
    8. while(stk.size() && nums[stk.top()] < nums[i%nums.size()])
    9. {
    10. if(res[stk.top()] == -1)
    11. {
    12. res[stk.top()] = nums[i%nums.size()];
    13. }
    14. stk.pop();
    15. }
    16. stk.push(i%nums.size());
    17. }
    18. return res;
    19. }
    20. };