1 条题解
-
0
#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; }
信息
- ID
- 147
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 25
- 已通过
- 3
- 上传者