滑动窗口最大值,c++

class Solution {
public:
    vector<int> maxInWindows(const vector<int>& num, unsigned int size)
    {
        vector<int> res;
        auto length = num.size();
        if (size < 1 || size > length) return res;

        // 中间容器初始化
        queue<int> iqu;
        int i = 0;
        while (i != size){
            iqu.push(num[i]);
            ++i;
        }

        while (i != length){
            res.push_back(findqueuemax(iqu));
            iqu.pop();
            iqu.push(num[i]);
            ++i;
        }
        res.push_back(findqueuemax(iqu)); // 少最后一组要补上
        return res;
    }

    int findqueuemax(queue<int> iqu){
        int res = INT_MIN;
        int length = iqu.size();
        for (int i = 0; i != length; ++i){
            if (res < iqu.front())
                res = iqu.front();
            iqu.push(iqu.front());
            iqu.pop();
        }
        return res;
    }
};

1、题目要求在数组上滑动窗口,自然想到中间容器用queue,出队入队完成窗口滑动
2、再一个问题就是找中间容器的max,注意!!!queue不能下标访问!!!
findqueuemax函数对中间queue遍历,寻找max。
欢迎交流指正!!!

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-18 22:30
我看都是谁在卷前端!
秋盈丶:搜了下,20人的公司能收到2000份招呼?真有这么夸张吗
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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