【单调栈】比当前值大或小
- 对于这样寻找最大值,我们是通过【主动】遍历的方式实现的
- 遍历nums数组,将当前下标存入栈内前,检查一下当前值能否作为栈顶位置的答案,若可以,则更新答案,并出栈
- 因此选用单调递减栈
- 由于该题为循环数组,因此需要遍历检查两次
class Solution {public: vector
nextGreaterElements(vector N; ++i) { while (!st.empty() && nums[st.back()] < nums[i % N]) { res[st.back()] = nums[i % N]; st.pop_back(); } st.emplace_back(i % N); } return res; }};& nums) { int N = nums.size(); vector st, res(N, -1); for (int i = 0; i < 2