单调栈:
通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。
739. 每日温度
题目链接:739. 每日温度
- 3种情况讨论,比栈顶大,比栈顶小或者等于
496. 下一个更大元素 I
题目链接:496. 下一个更大元素 I
递增栈是从栈头到栈底递增
这里需要2中元素在1中的映射
<pre class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" spellcheck="false" lang="c++" cid="n64" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; margin-top: 0px; margin-bottom: 20px; font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; background-color: rgb(51, 51, 51); position: relative !important; padding: 10px 10px 10px 0px; width: inherit;"> while(!st.empty() && st.top() < nums2[i]){
if (umap.count(st.top()) > 0) { // 需要这个判断否则2中出现了1中没有的数会出问题
res[umap[st.top()]] = nums2[i];
}
st.pop();
}</pre>