--- title: '739. Daily Temperatures' description: Given an array of integers temperatures represents the daily temperatures, return an array answer such that answer[i] is the number of days you have to wait after the i^th day to get a warmer temperature. If there is no future day for which this is possible, keep answer[i] == 0 instead icon: dot sidebar: label: 'Daily Temperatures' badge: 'Medium' --- Array ### Example 1: - Input: `temperatures = [73,74,75,71,69,72,76,73]` - Output: `[1,1,4,2,1,1,0,0]` ### Example 2: - Input: `temperatures = [30,40,50,60]` - Output: `[1,1,1,0]` ### Example 3: - Input: `temperatures = [30,60,90]` - Output: `[1,1,0]` ### Constraints: - `1 <= temperatures.length <= 10^5` - `30 <= temperatures[i] <= 100` ## Approach ```mermaid flowchart TD S(["dailyTemperatures(temperatures)"]) --> I["ans = zeros(n), stack = [] — indices of days still waiting"] I --> L{"more (i, temp)?"} L -- no --> E(["return ans"]) L -- yes --> W{"stack non-empty and temperatures[stack[-1]] < temp?"} W -- yes --> P["prev = stack.pop(); ans[prev] = i - prev — today resolves that day"] P --> W W -- no --> A["stack.append(i)"] A --> L ``` ## Solution ```py class Solution: def dailyTemperatures(self, temperatures: List[int]) -> List[int]: ans = [0] * len(temperatures) stack = [] for i, temp in enumerate(temperatures): while stack and temperatures[stack[-1]] < temp: prev = stack.pop() ans[prev] = i - prev stack.append(i) return ans ``` ## Explanation