美文网首页
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