首页 > 其他分享 >单调栈

单调栈

时间:2023-04-06 21:59:51浏览次数:35  
标签:int 打印 栈顶 printf include 单调

题目链接

单调栈

看一下其他人的题解

点这里

单调栈就是快速的求距离当前这个数最左边最近的一个数,对当前的数和栈里面的元素进行判断如果当前的数大于等于栈顶的数,这让栈顶的数一直出栈,如果最后如果栈为空打印-1,否则打印栈顶元素,然后再将当前的数入栈.这样进行操作就可以解决问题

#include <iostream>
#include <cstdio>
#include <stack>

using namespace std;
int main() {
	int n;
	scanf("%d", &n);
	stack<int> s;
	while (n--) {//n个数依次判断
		int x;
		scanf("%d", &x);
		//如果栈不为空,并且栈顶元素大于等于x
		while (s.empty() != true && s.top() >= x) {
			s.pop();//弹栈
		}
		if (s.empty() == true) {//退出循环如果栈为空
			printf("-1 ");//打印-1
			s.push(x);//将x入栈

		} else {
			printf("%d ", s.top());//否则打印栈顶
			s.push(x);//将x入栈
		}

	}

	return 0;
}

标签:int,打印,栈顶,printf,include,单调
From: https://www.cnblogs.com/harper886/p/17294322.html

相关文章

  • 单调队列与滑动窗口一
    单调队列--滑动窗口最值问题显然O(n^2)的时间复杂度是无法接受的我们先考虑滑动窗口滑动过程中最大值的问题过程即为我们想要维护每个滑动区间的最大值,当新插入一个元素前,我们把这个区间的第一个元素移除,插入新元素,并想在尽可能贴近O(1)的时间内得到该区间的最大值......
  • 单调栈
    第一次听说单调栈是在cf上看到的,当时看的糊里糊涂,正好算法进阶指南上有单调栈,赶紧看看cf题:https://codeforces.com/contest/1795/problem/E单调栈,顾名思义,栈内的元素单调排序,当题目满足某些性质时,单调栈的先进后出性质显得尤为重要,滑动窗口模拟优先队列便是这样。书上的第一道......
  • 算法随想Day51【单调栈】| LC739-每日温度、LC496-下一个更大元素Ⅰ
    LC739.每日温度vector<int>dailyTemperatures(vector<int>&temperatures){intsize=temperatures.size();vector<int>result(size,0);vector<int>sta;sta.push_back(0);for(inti=1;i<size;++i){......
  • 算法随想Day52【单调栈】| LC503-下一个更大元素Ⅱ、LC42-接雨水
    LC503.下一个更大元素Ⅱ对于“每日温度”,相当于对nums数组,进行了两次遍历。用i%size所得余数作为下标,且循环的圈数为size*2vector<int>nextGreaterElements(vector<int>&nums){intsize=nums.size();vector<int>result(size,-1);vector<int>sta;......
  • 算法随想Day53【单调栈】| LC84-柱状图中最大的矩形
    intlargestRectangleArea(vector&heights){intresult=0;stackst;heights.insert(heights.begin(),0);heights.push_back(0);st.push(0);for(inti=1;i<heights.size();i++){if(heights[i]>heights[st.top()]){st.push(......
  • 单调栈
    单调栈是一种和单调队列类似的数据结构。单调队列主要用于解决滑动窗口问题,单调栈则主要用于解决NGE问题(NextGreaterElement),也就是,对序列中每个元素,找到下一个比它大的元素。(当然,“下一个”可以换成“上一个”(对于序列的正序、反序遍历),“比它大”也可以换成“比他小”,原理不变。......
  • 手写单调队列
    单调队列的功能单调队列,这个神奇的\(O(n)\)算法,经常有人把他和优先队列混为一谈,但实际上两者大相径庭。总的来说,单调队列有两个功能:可以从队头/队尾出队,而且出入顺序正常。可以按照增/减/自定义比较方式求出队中最值。单调队列有一个很著名的\(Sliding\)\(Window\)......
  • 【单调队列】LeetCode 239. 滑动窗口最大值
    题目链接239.滑动窗口最大值思路单调队列的使用方法,可以参考【单调队列】LeetCode面试题59-II.队列的最大值在本题中将滑动窗口的移动看作往队列中放数和取数的过......
  • 单调栈
    参考:https://www.bilibili.com/video/BV1Y441117gR/?from=search&seid=9796499757209042214&spm_id_from=333.337.0.0&vd_source=46d50b5d646b50dcb2a208d3946b1598设计......
  • POJ-2559-Largest Rectangle in a Histogram-DP或者单调栈
    ProblemE LargestRectangleinaHistogram TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):2498......