2086316487 题解分享 · 2025/2/24
单调栈 - 题解
``` #include <iostream> #include <vector> #include <stack> using namespace std; int main() { int n; cin >> n; vector<int> arr(n); for (int i = 0; i < n; ++i) { cin >> arr[i]; } stack<int> mono_stack; vector<int> res(n, -1); for (int i = 0; i < n; ++i) { // 弹出所有大于等于当前元素的栈顶元素 while (!mono_stack.empty() && mono_stack.top() >= arr[i]) { mono_stack.pop(); } // 栈非空时记录结果 if (!mono_stack.empty()) { res[i] = mono_stack.top(); } // 当前元素入栈 mono_stack.push(arr[i]); } for (int num : res) { cout << num << " "; } return 0; } ```
查看全文
0 0 0 4