题解 | #单调栈#

单调栈

http://www.nowcoder.com/practice/ae25fb47d34144a08a0f8ff67e8e7fb5

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums intvector 
     * @return intvector<vector<>>
     */
    vector<vector<int> > foundMonotoneStack(vector<int>& nums) {
        // write code here
        int n = nums.size();
        stack<int> leftStk;
        vector<int> leftMin(n, -1);
        for(int i = 0; i < n; i ++){
            while(!leftStk.empty() && nums[leftStk.top()] >= nums[i]) leftStk.pop();
            leftMin[i] = leftStk.empty() ? -1 : leftStk.top();
            leftStk.push(i);
        }
        stack<int> rightStk;
        vector<int> rightMin(n, -1);
        for(int i = n - 1; i >= 0; i --){
            while(!rightStk.empty() && nums[rightStk.top()] >= nums[i]) rightStk.pop();
            rightMin[i] = rightStk.empty() ? -1 : rightStk.top();
            rightStk.push(i);
        }
        vector<vector<int>> res(n);
        for(int i = 0; i < n; i ++){
            res[i] = {leftMin[i], rightMin[i]};
        }
        return res;
    }
};
全部评论

相关推荐

专业嗎喽:个人信息名字太大,合到电话邮箱那一栏就行,有党员写过党,剩下其他全删,站空太大了 把实习经历丰富,放最前面,然后是个人评价,技能之类的,然后是学校信息。项目经历最后面,可以就选一个自己擅长的。 现在是学校不是92就扣分的,没必要放前面。 然后现在看重实习经历>竞赛经历(校园经历)>课程项目经历
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务