代码随想录训练营Day59单调栈Part01|739. 每日温度|496.下一个更大元素①

单调栈

  • 单调栈应用场景:找当前元素左边/右边比当前元素大/小的第一个元素
  • 什么是单调栈:保证栈里面的元素递增/递减(需要自己定义)
  • 栈内保存什么:存入下标
  • 如何比较大小:栈和数组做映射
  • 递增?递减?:取决于应用场景
    • :求当前元素左边/右边比他的第一个元素
    • :求当前元素左边/右边比他的第一个元素
  • 单调栈的作用:记录存放遍历过的元素,存放的同时进行排序

739. 每日温度

  • 不需要倒序遍历,正序遍历,存入
  • 注意栈内存入的是元素下标而不是元素的值
  • 当前元素比栈口大,则弹出栈口元素,记录该元素结果;循环该过程直到栈为空
  • 当前元素比栈口小,则压入元素,不记录
  • 最后遍历结束,但是栈内的元素没有找到比其更大的,则赋零

496.下一个更大元素①

  • 可以在上一题的基础上做

  • 对于两个没有重复元素的数组(一个为另一个子集),可以用map来做映射

  • unordered_map<int, int> umap;  //key,下标元素;value,下标
    for(int i = 0; i<nums1.size(); i++) umap[nums1[i]] = i;
    
    //使用
    if(umap.count(nums2[st.top()]) > 0){   //查看map中是否存在这个元素
        int index = umap[nums2[st.top()]]; //查询该元素对应的下标
        result[index] = nums2[i];
    }
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值