Loading... > https://leetcode.cn/problems/next-greater-element-ii/description/?envType=daily-question&envId=2024-05-02 可以使用单调栈来求解。 注意是循环数组,所以遍历一次是不能找出所有解的。再遍历一次即可解决。 ```c++ class Solution { public: std::vector<int> nextGreaterElements(std::vector<int> &nums) { const int n = nums.size(); std::vector<int> res(n, -1); std::stack<int> stack; for (int i = 0; i < n * 2 - 1; i++) { while (!stack.empty() && nums[stack.top()] < nums[i % n]) { res[stack.top()] = nums[i % n]; stack.pop(); } if (i < n) stack.push(i % n); } return res; } }; ``` - 时间复杂度:$O(n)$ ,其中 $n$ 为 `nums` 数组的长度。 - 空间复杂度 :$O(n)$ ,栈大小最多为 $2n - 1$ 。 最后修改:2024 年 06 月 24 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏