数组模拟单调栈 文章目录 Question Ideas Code Question 给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1 。 输入格式 第一行包含整数 N ,表示数列长度。 第二行包含 N 个整数,表示整数数列。 输出格式 共一行,包含 N 个整数,其中第 i 个数表示第 i 个数的左边第一...
//tt表示栈顶intstk[N], tt =0;//向栈顶插入一个数stk[ ++ tt] =x;//从栈顶弹出一个数tt --;//栈顶的值stk[tt];//判断栈是否为空if(tt >0){} 用数组模拟队列 //hh 表示队头,tt表示队尾intq[N], hh =0, tt = -1;//向队尾插入一个数q[ ++ tt] =x;//从队头弹出一个数hh ...
单调栈:给定一个数组,求一个数左边/右边第一个比他大/小的数 单调队列:给定一个数组,求一个大小为k的滑动区间最大/最小值...单调栈+单调队列 单调栈介绍 单调栈与普通的栈数据结构是一样的,但是单调栈中元素要维持有序,之所以要维持有序,是因为在用单调栈求解的问题中,可以根据问题的性质只保存...
思路:统计所有最大值范围在[left,right]之间的子数组个数,可等价为统计每一个范围落在[left,right]之间的nums[i]作为最大值时子数组的个数。 实现:使用单调栈寻找每一个nums[i]左右最近一个比小于等于其的位置,分别记为L、R,那么对结果的贡献为(i?L)?(b?R),累加返回最终结果 class Solution {public in...