滑动窗口最大值(力扣239)

解题思路:首先是用暴力循环来解,其次便是用队列来模拟这个滑动窗口,同时要自定义三个函数,一个pop用来弹出来保证滑动窗口的移动,同时我们把最大的放在队列口那里,当每次有更大的就把原来的挤出栈外,一个push用来把前面不够大的元素排挤出队列并且把最大的那个数压入队列,还有一个find来找到最大的元素

代码实现如下:

class Solution {

private:

class MyQueue{

public:

deque<int>a;

void pop(int val){

if(!a.empty()&&val==a.front()){

a.pop_front();

}

}

void push(int val){

while(!a.empty()&&a.back()<val){

a.pop_back();

}a.push_back(val);

}

int findBest(){

return a.front();

}

};

public:

vector<int> maxSlidingWindow(vector<int>& nums, int k) {

MyQueue b;vector<int>result;

for(int i=0;i<k;i++){

b.push(nums[i]);

}

result.push_back(b.findBest());

for(int i=k;i<nums.size();i++){

b.pop(nums[i-k]);

b.push(nums[i]);

result.push_back(b.findBest());

}return result;

}

};

相关推荐
老前端的功夫17 分钟前
Vue2中key的深度解析:Diff算法的性能优化之道
前端·javascript·vue.js·算法·性能优化
想要打 Acm 的小周同学呀41 分钟前
爬虫相关的面试问题
爬虫·selenium·职场和发展
yongui478341 小时前
基于深度随机森林(Deep Forest)的分类算法实现
算法·随机森林·分类
是苏浙1 小时前
零基础入门C语言之C语言实现数据结构之单链表经典算法
c语言·开发语言·数据结构·算法
橘颂TA1 小时前
【剑斩OFFER】算法的暴力美学——点名
数据结构·算法·leetcode·c/c++
MATLAB代码顾问3 小时前
多种时间序列预测算法的MATLAB实现
开发语言·算法·matlab
PPT百科3 小时前
PPT插入的音乐怎么让它播放到某一页就停?
大数据·职场和发展·powerpoint·职场·ppt模板
m0_736927043 小时前
2025高频Java后端场景题汇总(全年汇总版)
java·开发语言·经验分享·后端·面试·职场和发展·跳槽
高山上有一只小老虎4 小时前
字符串字符匹配
java·算法
愚润求学4 小时前
【动态规划】专题完结,题单汇总
算法·leetcode·动态规划