2021-03-24 Leetcode-739

739. 每日温度

思路:维护一个单调栈
方法:新建一个数组存放等待的天数。维护一个递减的单调栈,存放温度递减的第X天,当新的元素T[i]比栈顶元素表示的当天温度高时,弹出栈顶元素,并用下标相减得出相差的天数,存入数组中。

/*执行用时:19 ms, 在所有 Java 提交中击败了67.15%的用户
内存消耗:46.6 MB, 在所有 Java 提交中击败了55.08%的用户*/
class Solution {
    public int[] dailyTemperatures(int[] T) {
        int len = T.length;
        int[] a = new int[len];
        Stack<Integer> s = new Stack<>();
        int num = Integer.MAX_VALUE;
        for(int i =0; i < len ; i++){
            while(!s.isEmpty() && T[i] > T[s.peek()]){
                int t = s.pop();
                a[t] = i - t;
            }
            s.push(i);
        }
        return a;
    }   
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 739. 每日温度[https://leetcode-cn.com/problems/daily-temperat...
    Yaan9阅读 177评论 0 0
  • 题目描述:【Stack】739. Daily Temperatures 解题思路: 这道题是给一个温度列表,重新生...
    牛奶芝麻阅读 488评论 0 0
  • Leetcode 739 每日温度题解 [toc] 题目 请根据每日 气温 列表,重新生成一个列表。对应位置的输出...
    petrichor_c9f0阅读 636评论 0 0
  • 20、有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有...
    BigBigFlower阅读 510评论 0 0
  • 题目描述 请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如...
    su945阅读 206评论 0 0