补全:弹栈比较
补全 next_greater 的弹栈条件:栈顶的值比 a[i] 小才弹。补全后输出第 0 个数的答案。 本节模型:next_greater / prev_greater 用单调栈(vector 存下标)求右边 / 左边第一个更大的数,没有
补全:记下答案
补全 next_greater:弹栈之前把 a[i] 记成栈顶那个下标的答案。补全后输出第 0 个数的答案。 本节模型:next_greater / prev_greater 用单调栈(vector 存下标)求右边 / 左边第一个更大的数,
补全:入栈等待
补全 next_greater:每个下标处理完都要入栈,等着以后被更大的数匹配。补全后输出全部答案。 本节模型:next_greater / prev_greater 用单调栈(vector 存下标)求右边 / 左边第一个更大的数,没有记
左边最近更大什么时候读
第 1 步:下面一行填左边最近更大 第 2 步:弹掉不比 5 大的,读栈顶 第 3 步:弹掉不比 3 大的,读栈顶 第 4 步:弹掉不比 4 大的,读栈顶 第 5 步:弹掉不比 2 大的,读栈顶 第 6 步:弹掉不比 6 大的,读栈顶 第
相等的元素怎么处理
求严格更大时,遇到和 a[i] 相等的栈顶,应当【0】。 本节模型:next_greater / prev_greater 用单调栈(vector 存下标)求右边 / 左边第一个更大的数,没有记 -1。
这个栈是单调增还是减
求上一个更大元素时,栈从底到顶保持【0】。 本节模型:next_greater / prev_greater 用单调栈(vector 存下标)求右边 / 左边第一个更大的数,没有记 -1。
几个有左边更大
运行下面这段程序: 本节模型:next_greater / prev_greater 用单调栈(vector 存下标)求右边 / 左边第一个更大的数,没有记 -1。 #include <algorithm> #include &
一路递减的数组
运行下面这段程序: 本节模型:next_greater / prev_greater 用单调栈(vector 存下标)求右边 / 左边第一个更大的数,没有记 -1。 #include <algorithm> #include &
补全:相等也弹
补全 prev_greater 的弹栈条件:严格更大时,相等的也要弹。补全后数有几个元素有左边更大。 本节模型:next_greater / prev_greater 用单调栈(vector 存下标)求右边 / 左边第一个更大的数,没有记
补全:先读栈顶
补全 prev_greater:栈不空时,栈顶就是左边最近的更大。补全后数有几个元素有左边更大。 本节模型:next_greater / prev_greater 用单调栈(vector 存下标)求右边 / 左边第一个更大的数,没有记 -1