---
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
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

[Daily Temperatures - Monotonic Stack - Leetcode 739 - Python](https://www.youtube.com/watch?v=cTBiBSnjO3c)
