Sunday, October 25, 2020

LeetCode [739] Daily Temperatures

 739. Daily Temperatures

Medium

Given a list of daily temperatures T, return a list such that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0 instead.

For example, given the list of temperatures T = [73, 74, 75, 71, 69, 72, 76, 73], your output should be [1, 1, 4, 2, 1, 1, 0, 0].

Note: The length of temperatures will be in the range [1, 30000]. Each temperature will be an integer in the range [30, 100].

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
class Solution {
    public int[] dailyTemperatures(int[] T) {
        int n = T.length;
        int[] output = new int[n];
        Stack<Integer> stk = new Stack<>();
        
        for(int i=n-1; i>=0; --i){
            int t = T[i];
            while(!stk.isEmpty() && T[stk.peek()]<=t) stk.pop();
            if(!stk.isEmpty()) output[i] = stk.peek()-i;
            stk.add(i);
        }
        
        return output;
    }
}

No comments:

Post a Comment