From b7423ff9874d9cafeb8dab03d002d5e186d21748 Mon Sep 17 00:00:00 2001 From: tom4649 Date: Fri, 19 Jun 2026 07:32:05 +0900 Subject: [PATCH] step1,2 --- 0739.Daily-Temperatures/memo.md | 28 ++++++++++++++++++++++++++++ 0739.Daily-Temperatures/step1.py | 11 +++++++++++ 0739.Daily-Temperatures/step2.py | 14 ++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 0739.Daily-Temperatures/memo.md create mode 100644 0739.Daily-Temperatures/step1.py create mode 100644 0739.Daily-Temperatures/step2.py diff --git a/0739.Daily-Temperatures/memo.md b/0739.Daily-Temperatures/memo.md new file mode 100644 index 0000000..ac2cb9b --- /dev/null +++ b/0739.Daily-Temperatures/memo.md @@ -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 +省略 diff --git a/0739.Daily-Temperatures/step1.py b/0739.Daily-Temperatures/step1.py new file mode 100644 index 0000000..5327401 --- /dev/null +++ b/0739.Daily-Temperatures/step1.py @@ -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 diff --git a/0739.Daily-Temperatures/step2.py b/0739.Daily-Temperatures/step2.py new file mode 100644 index 0000000..f06f677 --- /dev/null +++ b/0739.Daily-Temperatures/step2.py @@ -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