leetcode 239. 滑动窗口最大值

2023.6.21

leetcode 239. 滑动窗口最大值_第1张图片

        辛辛苦苦写了个暴力法求解,结果测试用例来了个k=50000的窗口,直接运行超时,我真人麻了。  

leetcode 239. 滑动窗口最大值_第2张图片

         不管怎么样思路还是可以的,还是附上来代码:

解法一:暴力解(leetcode的实例会超时)

class Solution {
public:
    vector maxSlidingWindow(vector& nums, int k) {
        vector ans;
        //窗口大小 <= 数组大小 的情况 
        if(nums.size() <= k)
        {
            int max = INT_MIN;
            for(int i=0; i max) max = nums[i];
            }
            return {max};
        }

        for(int i=0; i max) max = nums[j];
            }
            ans.push_back(max);
        }
        return ans;
    }
};

解法二:优先队列-priority_queue

        优先队列指priority_queue,就是在队列的基础上增加了排序功能。内部是由堆实现的,默认是大顶堆,即最大元素排在队头。

        ps:队列里的元素不用着急删除!!!用一个索引标识它就行。

        思路很巧妙,直接看代码:

class Solution {
public:
    vector maxSlidingWindow(vector& nums, int k) {
        vector ans;
        priority_queue> queue;
        for(int i=0; i

  优先队列好像没法用push? 得用emplace进行插入元素。

  还有一种单调队列解法,改天再学把。

你可能感兴趣的:(leetcode专栏,leetcode,算法,c++,数据结构)