什么时候弹栈

扫到 a[i] 时,只要栈顶下标对应的值【0】,就弹出它并记下答案 a[i]。 本节模型:next_greater / prev_greater 用单调栈(vector 存下标)求右边 / 左边第一个更大的数,没有记 -1。

开始练习 →

扫完还在栈里的怎么办

扫描结束时仍留在栈里的元素,它们的「下一个更大」记为【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 的弹栈条件:栈顶的值比 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。

开始练习 →