Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions 0739.Daily-Temperatures/memo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 739. Daily Temperatures

## step1

単調スタックを思いつき、ほぼミスなくコードをかけた。5m程度。

一度等しい温度の処理で間違えたが、問題文に明記されていないので、問題の不備のような気もする。


## 他の人のコード

https://github.com/wf9a5m75/leetcode3/pull/4

indexだけを保持している。dequeを使う必要はなさそう

変数名はわかりやすい


https://github.com/Exzrgs/LeetCode/pull/37

min_heapを使う解法もあるが今回はstackが一番良さそう

https://github.com/TaisukeFujise/leetcode_tafujise/pull/23

unresolved_days はよさそう

## step3
省略
11 changes: 11 additions & 0 deletions 0739.Daily-Temperatures/step1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class Solution:
def dailyTemperatures(self, temperatures: list[int]) -> list[int]:
result = [0] * len(temperatures)
decreasing_stack = []
for i, t in enumerate(temperatures):
while decreasing_stack and decreasing_stack[-1][0] < t:
_, j = decreasing_stack.pop()
result[j] = i - j
decreasing_stack.append((t, i))

return result
14 changes: 14 additions & 0 deletions 0739.Daily-Temperatures/step2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class Solution:
def dailyTemperatures(self, temperatures: list[int]) -> list[int]:
days_to_wait = [0] * len(temperatures)
unresolved_day_indices = []
for today_index, temperature in enumerate(temperatures):
while (
unresolved_day_indices
and temperatures[unresolved_day_indices[-1]] < temperature
):
unresolved_day_index = unresolved_day_indices.pop()
days_to_wait[unresolved_day_index] = today_index - unresolved_day_index
unresolved_day_indices.append(today_index)

return days_to_wait