滑动窗口最大值(力扣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;

}

};

相关推荐
代码游侠1 分钟前
学习笔记——栈
开发语言·数据结构·笔记·学习·算法
自然语3 分钟前
人工智能之数字生命-情绪
人工智能·算法
Ayanami_Reii11 分钟前
进阶数据结构应用-维护序列
数据结构·算法·线段树
_w_z_j_18 分钟前
mari和shiny() (多状态dp数组)
算法
CoderYanger22 分钟前
C.滑动窗口-越长越合法/求最短/最小——2904. 最短且字典序最小的美丽子字符串
java·开发语言·数据结构·算法·leetcode·1024程序员节
Tim_1024 分钟前
【算法专题训练】33、堆
算法
Salt_072837 分钟前
DAY25 奇异值SVD分解
python·算法·机器学习
℉AVE44 分钟前
点集配准---迭代最近点算法ICP(Iterative Closest Point)
算法
大数据魔法师1 小时前
聚类算法(一)- K-Means聚类
算法·kmeans·聚类
CoderYanger1 小时前
A.每日一题——2141.同时运行N台电脑的最长时间
java·算法·leetcode·职场和发展·1024程序员节