(叠甲 纯属个人学习记录 如有雷同直接滑轨)美好的一天从不会做简单题开始
Leedcode496下一个更大元素 I
第一眼是暴力遍历,在nums2中找到nums1里元素的位置,再往后找大的,但一想复杂度不得是O(m*n),一看栈相关,感觉先可以从nums2里面优化,再对应nums1,但对应nums1复杂度不还是logmn嘛,看了题解才知道可以用unorder_map建立一个哈希表直接对应着找...最烦这种交叉题目 本来各个基础就不好
记一下单调栈的用法和哈希表的用法
单调栈可以在时间复杂度为 O(n) 的情况下,找到元素左边或者右边最近的较小或者较大的元素。
个人认为重点在于 最近 和 配合hash表随时更新
- 最近就是 找左边,就从左向右构造,找右边,就从右向左构造。
- 如果更新后栈里面最后不为空,则能找到,记在hash表里面其他
其他
- #include <unordered_map>
- unordermap&unorderset 用法上:前者key值不同,value可同,后者key value都不能重复
- vector&stack stack不能遍历,没有迭代器