代码随想录算法训练营day13|239.滑动窗口最大值、347.前K个高频元素

发布时间:2024年01月19日
  • ?239.?滑动窗口最大值
  • ?347.前?K?个高频元素

?239.?滑动窗口最大值?(一刷至少需要理解思路

之前讲的都是栈的应用,这次该是队列的应用了。

本题算比较有难度的,需要自己去构造单调队列,建议先看视频来理解。?

题目链接/文章讲解/视频讲解:代码随想录

?347.前?K?个高频元素? (一刷至少需要理解思路)

大/小顶堆的应用,?在C++中就是优先级队列?

本题是?大数据中取前k值?的经典思路,了解想法之后,不算难。

题目链接/文章讲解/视频讲解:代码随想录


class Solution {
private:
    class Myque{
        public:
        deque<int> que;
        void pop(int value){
            if (!que.empty()&&que.front()==value)
                que.pop_front();
        }
        void push(int value){
            while (!que.empty()&&value>que.back())
                que.pop_back();
            que.push_back(value);
        }
        int front(){
            return que.front();
        }
    };
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        Myque que;
        vector<int> result;
        for (int i=0;i<k;i++){
            que.push(nums[i]);
        }
        result.push_back(que.front());
        for (int i=k;i<nums.size();i++){
            que.pop(nums[i-k]);
            que.push(nums[i]);
            result.push_back(que.front());
        }
        return result;
    }
};

——未完待续

文章来源:https://blog.csdn.net/2302_79277225/article/details/135691489
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。