滑动窗口最大值,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。
欢迎交流指正!!!

全部评论

相关推荐

点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务