美文网首页
Daily Temperatures

Daily Temperatures

作者: BLUE_fdf9 | 来源:发表于2018-09-19 10:19 被阅读0次

题目
Given a list of daily temperatures, produce a list 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 temperatures = [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].

答案

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        int n = temperatures.length;
        int[] ans = new int[n];
        
        Stack<Integer> temp_stk = new Stack<>();
        Stack<Integer> idx_stk = new Stack<>();
        
        for(int i = 0; i < n; i++) {
            int curr_temp = temperatures[i];
            while(!temp_stk.empty() && temp_stk.peek() < curr_temp) {
                int t = temp_stk.pop();
                int idx = idx_stk.pop();
                ans[idx] = i - idx;
            }
            temp_stk.push(curr_temp);
            idx_stk.push(i);
        }
        return ans;        
    }
}

相关文章

网友评论

      本文标题:Daily Temperatures

      本文链接:https://www.haomeiwen.com/subject/gfibnftx.html