• 力扣打卡之单调栈问题


    我将练习下面的单调栈问题

    1. 每日温度【8.12】

    给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

    基本思想

    代码展示

    有了上面的基本的描述,我们就可以有了基本的思路了

    ①我们需要创建一个栈来帮助我们进行操作

    ②我们需要一个数组来存放我们的结果

    ③我们需要弄清楚我们的题目的核心在于:只要后面的元素大于前面的,我们就可以立刻找到它对应的所要求得的解!

    while(!stack.isEmpty && temperature[i]>tempareture[stack.peek()])

     最后的代码如下所示:

    1. class Solution{
    2. public int[] dailyTemperatures(int[] temperatures) {
    3. int len=temperatures.length;
    4. Stack stack = new Stack<>();
    5. int [] answer=new int[len];
    6. //需要把栈为空放在前面,才不会导致后面出现找不到元素的可能!
    7. for(int i=0;i
    8. while(!stack.isEmpty()&&temperatures[i]>temperatures[stack.peek()] ){
    9. //满足条件的时候在对应的位置上放上对应的值
    10. answer[stack.peek()]=i-stack.peek();
    11. stack.pop();
    12. }
    13. stack.push(i);
    14. }
    15. return answer;
    16. }
    17. }

    总结

    ①记住单调栈是怎么使用的,下次如果遇到相反的情况又是否会使用?

    ②针对上一点,我来进行一个简单的概括

    ③最后我们需要记住,如果我们需要对栈是不是为空进行判断同时后面的表达式也和栈有关系,栈为空的表达式一定要放在最前面,免得后面出现栈指向异常! 

    2. 接雨水【8.13】

  • 相关阅读:
    ubuntu开启防火墙端口号
    【MySQL】基本查询(二)
    详解JS遍历对象的五种方法
    SpringMVC常用注解的详细解析
    数据结构 - 红黑树
    Windows Server 2012 R2系统远程桌面的数字证书算法SHA1升级到SHA256
    linux系统环境离线安装
    小程序类找茬游戏开发:创造富有挑战性和娱乐性的游戏体验
    Mysql配置binlog并实现数据库备份恢复
    uniapp 轮播图 预览图片转圈问题
  • 原文地址:https://blog.csdn.net/young_man2/article/details/126311333