zoukankan      html  css  js  c++  java
  • 剑指offer64:滑动窗口的最大值

    题目描述:

    给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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]}。

    这个题目不会做,参考了别人的方法,很巧妙的使用了双端队列deque存储数组的index

    class Solution {
    public:
        vector<int> maxInWindows(const vector<int>& num, unsigned int size){
            vector<int> res;
            if(size > num.size() || size <=0 || num.empty())
                return res;
            deque<int> dq;
            for(size_t i=0;i<num.size();i++){
                while(!dq.empty() && num[i] >= num[dq.back()]){
                    dq.pop_back();
                }
                while(!dq.empty() && i - dq.front() + 1 > size){
                    dq.pop_front();
                }
                dq.push_back(i);
                if(size && i+1 >=size){
                    res.push_back(num[dq.front()]);
                }
            }
            return res;
        }
    };
  • 相关阅读:
    Activator.CreateInstance 反射实例化对象
    MVC Form提交
    Redis 下载
    List<T> 序列化与反序列化
    快速反射DataTable
    数据库特性
    javascript判断文件大小
    MD5
    HttpHelper
    cacheHelper
  • 原文地址:https://www.cnblogs.com/wxquare/p/6767391.html
Copyright © 2011-2022 走看看