739. 每日温度

2021-10-27  本文已影响0人  justonemoretry
image.png

解法

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        // 维护一个单调递减栈,栈里面存放下标,找到大于栈顶的再跳出计算
        int len = temperatures.length;
        int[] res = new int[len];
        Stack<Integer> s = new Stack<>();
        for (int i = 0; i < len; i++) {
           // 当前大于栈顶,说明是温度升高的一天,可以将之前小于的点都算出来
            while (!s.isEmpty() && temperatures[i] > temperatures[s.peek()]) {
                int index = s.pop();
                res[index] = i - index;                
            }
            s.add(i);
        }
        return res;
    }
}
上一篇下一篇

猜你喜欢

热点阅读