zoukankan      html  css  js  c++  java
  • 代码题(62)— 滑动窗口最大值

    1、滑动窗口的最大值

    /*
    * 面试题65:滑动窗口的最大值
    * 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。
    * 例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,
    * 他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:
    * {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1},
    * {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。
    */

    class Solution {
    public:
        vector<int> maxInWindows(const vector<int>& num, unsigned int size)
        {
            vector<int> result;
            if(size < 1 || size > num.size())
                return result;
            deque<int> index;
            for(unsigned int i=0;i<size;i++)
            {
                while(!index.empty() && num[i] >= num[index.back()])
                    index.pop_back();
                index.push_back(i);
            }
            for(unsigned int i=size;i<num.size();i++)
            {
                result.push_back(num[index.front()]);
                while(!index.empty() && num[i] >= num[index.back()])
                    index.pop_back();
                if(!index.empty() && index.front() <= (int)(i-size))
                    index.pop_front();
                index.push_back(i);
            }
            result.push_back(num[index.front()]);
            return result;
            
        }
    };
  • 相关阅读:
    thinkphp5ajax分頁&&搜索後分頁
    yii框架多文件上傳
    Redis:Linux安装与使用
    JSP使用Struts2标签库报错
    Dubbo:3
    Dubbo:1
    Dubbo:2
    zookeeper:master选举
    zookeeper:分布式锁简单实现(JavaApi)
    zookeeper:Curator操作节点
  • 原文地址:https://www.cnblogs.com/eilearn/p/9673497.html
Copyright © 2011-2022 走看看