1 条题解

  • 0
    @ 2025-2-24 19:40:10
    #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
    上传者