Queries with Fixed Length

  • + 1 comment

    C++ deque solution

    vector<int> solve(vector<int> arr, vector<int> queries) {
        vector<int> result;
        for(int i=0;i<queries.size();i++)
        {
            int k=queries[i];
            vector<int> v;
            deque<int> dq;
            for(int i=0;i<k;i++)
            {
                while(dq.empty()!=true && arr[i]>arr[dq.back()])
                    dq.pop_back();
                dq.push_back(i);
            }
            for(int i=k;i<arr.size();i++)
            {
                v.push_back(arr[dq.front()]);
                while(dq.empty()!=true && dq.front()<=i-k)
                    dq.pop_front();
                while(dq.empty()!=true && arr[i]>=arr[dq.back()])
                    dq.pop_back();
                dq.push_back(i);
            }
            v.push_back(arr[dq.front()]);   
            sort(v.begin(),v.end());
            result.push_back(v[0]);
        }
        return result;
    }