Files
obsidian/АиСД/Задачи/LeetCode/Daily Temperatures.md
T
roma-dxunvrs 04fc7af4f4 Weekends
2026-09-07 08:24:01 +03:00

25 lines
1.4 KiB
Markdown

Leetcode #739 | #Medium | [[Монотонный стек]] | [[Стек]]
## Идея
Идея монотонного стека. Кладем дни в стек, как бы садим на скамейку. При проходе по очередному дню смотрим на вершину стека, если день теплее, то он "забирает" день со стека в результат. И так далее собирает пока не станет слишком "холодным" для ждущего, либо пока стек не закончится. Монотонный - потому что в стеке температуры будут только возрастать, если на понижение - то день уходит в результат.
## [[Big-O]]
- Время ```O(N)```
- Память ```O(N)```
## Код
```Java
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
Deque<Integer> stack = new ArrayDeque<>();
int[] res = new int[temperatures.length];
for (int i = 0; i < temperatures.length; i++) {
while (stack.size() > 0 && temperatures[i] > temperatures[stack.peek()]) {
int pickedIndex = stack.pop();
res[pickedIndex] = i-pickedIndex;
}
stack.push(i);
}
return res;
}
}
```