c++ 双端队列deque 单调栈stack

本文介绍了如何利用C++中的双端队列deque和单调栈stack解决滑动窗口最大值和最小值的问题。通过实例解析了deque在保持元素递增或递减顺序时的应用,以及单调栈在查找相邻较小值中的作用。
摘要由CSDN通过智能技术生成

本篇涉及知识点:双端队列 deque 单调栈 stack

滑动窗口的最大值

题目:P1886 最大值最小值

由于需要直到某个区间的最大值,在区间向右滑动的时候,可以拆解为R向右一位,L也向右一位。
由于我们只需要最大值,所以deque里的内容单调递减的,开头的最大,记录的是arr的【下标】

复习一下双端队列的方法

deq.front(); //返回队列首
deq.back();//返回队列尾
deq.pop_back(); //删除最后一位
deq.push_back(); //队尾加入一个
deq.empty(); //判空

deque–Code

最大值

双端队列中 由大到小

返回每个长度为size的区间内最大值
vector<int> getMaxarr(vector<int>& arr , int size){
   
	vector<int> res; //存所有长度为size的答案
	deque<int> deq;  
	for(int i=0;i<arr.size();i++){
   
		//R右移 
		while(!deq.empty() && arr[deq.back()] < arr[i])
			deq.pop_back()<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值