【LeetCode-每日一题】-739-每日温度

梦里梦外; 2023-02-20 02:15 90阅读 0赞

1. 题目描述

在这里插入图片描述

2. 题目解析

  1. 大致的意思是:在今天的以后几天内,有哪一天是比今天的气温升高的,如果有的话,求出其中的天数差,如果没有的话,用0代替。
  2. 一开始用的暴力,然后超时。
  3. 这个题目用到了单调栈的原理。
    在这里插入图片描述

3. 题目代码

  1. public static int[] dailyTemperatures(int[] T) {
  2. int[] list = new int[T.length];
  3. int num = 0;
  4. Stack<Integer> stack = new Stack<>();
  5. for (int i = 0; i < list.length; i++) {
  6. // 字符串长度为 0,返回 true,否则返回 false。
  7. // Object push(Object element):将元素推送到堆栈顶部。
  8. // Object pop():移除并返回堆栈的顶部元素。如果我们在调用堆栈为空时调用pop(),则抛出’EmptyStackException’异常。
  9. // Object peek():返回堆栈顶部的元素,但不删除它。
  10. // boolean empty():如果堆栈顶部没有任何内容,则返回true。否则,返回false。
  11. // int search(Object element):确定对象是否存在于堆栈中。如果找到该元素,它将从堆栈顶部返回元素的位置。否则,它返回-1。
  12. while (!stack.isEmpty() && T[i] > T[stack.peek()]) {
  13. list[stack.peek()] = i - stack.peek();
  14. stack.pop();
  15. }
  16. stack.add(i);
  17. }
  18. return list;
  19. }

发表评论

表情:
评论列表 (有 0 条评论,90人围观)

还没有评论,来说两句吧...

相关阅读

    相关 LeetCode739. 每日温度

    给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer\[i\] 是指对于第 i 天,下一个更高温度出现在几天后。如果气

    相关 LeetCode 739. 每日温度

    根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。 例如,给定一个列表 tem

    相关 LeetCode 739每日温度

    题目描述 请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。

    相关 LeetCode-739. 每日温度

    [739. 每日温度][739.] 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请输入 0 来代替。