代码随想录冲冲冲 Day47 单调栈Part1

739. 每日温度

初步了解单调栈,根本思想就是如果求的是一个元素右边或左边第一个最大的元素 那么就是递增栈,如果是最小的就是递减栈

首先先放入一个0代表 第一个元素的index

之后开始for loop

当后面的值小于等于这个top时 就要先把index放入st中,说明之前放入的还没找到

第一个最大的,刚刚放入的这些也是要找的

当出现一个值大于top时

result的st.top()也就是之间放入的值的位置就等于差值(题目需要的)

比较完后把比较过的pop走

但是没有办法保证是不是另一个也可以pop所以这里while loop的条件不仅是大小

还要确保是不是为空,如果不为空并且持续满足 就会一直运行

直到不满足条件时,这时候就是st为空了或者是当前值比st里面放着的值更小了

更小了就得先给这个更小的找了 所以st中把更小的这个的index值放入

496. 下一个更大元素 I

这道和上一道基本一样,不一样的是题目中要求放另一个nums的元素到第一个的位置上

所以需要一个map去记录第一个nums每个元素的index

当出现满足while条件时,要判断一下nums2的这个元素是不是在第一个中

如果不在根本就放不进去,如果在的话根据umap就可以知道改把这个元素放在什么地方

503. 下一个更大元素 II

这道题是一个循环情况我们选择的是forloop i< nums.size()*2

这样像是nums的最后一个元素 就可以得到答案

但是这里的关键步骤还有取%,在取%后,当i 大于了nums.size()后,会自然回到

一开始的地方,就相当于又重新开始比较了

相关推荐
疯狂打码的少年1 小时前
【数据结构】哈希表:构造与冲突处理
数据结构·笔记·哈希算法·散列表
淡海水2 小时前
03-02-线性-List-T-动态数组布局-扩容与操作成本
数据结构·windows·c#·list·编译·clr·机器码
小飞学编程...11 小时前
【哈希表】
数据结构·哈希算法·散列表
重生之后端学习13 小时前
283. 移动零[简单]✅
开发语言·数据结构·算法·leetcode·职场和发展
动词ing14 小时前
【C语言】结构体+文件基础
c语言·开发语言·数据结构
晚风醉蝶17 小时前
1-11-奇偶排序-OddEvenSort
java·数据结构·算法
旖旎夜光17 小时前
LeetCode 852:山脉数组的峰顶索引(二分查找) —— 题解
数据结构·c++·算法·leetcode·二分查找
小雪崩19 小时前
嵌入式学习 day25:哈希表及排序与查找
linux·c语言·数据结构·学习·排序算法
冻柠檬飞冰走茶21 小时前
《数据结构实验指导-C++语言版》 求单链表list中的元素个数,即表长
开发语言·数据结构·c++·算法·list
_Narcissus_21 小时前
动态规划初探(含完整代码实现)
c语言·数据结构·c++·算法·动态规划·背包问题·最短路径