From 39ef523bb46e27fdb042740d901cb7b1c7a67c85 Mon Sep 17 00:00:00 2001 From: potrue <126231160+potrue@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:58:12 +0900 Subject: [PATCH] 122. Best Time to Buy and Sell Stock II MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 問題文: https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/description/ --- 122/122.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 122/122.md diff --git a/122/122.md b/122/122.md new file mode 100644 index 0000000..9005521 --- /dev/null +++ b/122/122.md @@ -0,0 +1,43 @@ +## 何も見ずに解いてみる + +単純に価格が上がったときの差を全部足していけばよさそう。 +問題文の"you can buy it then immediately sell it on the same day."はどういう意図だろう?これができてもできなくても答えは変わらない気がしますが・・・ + +```cpp +class Solution { +public: + int maxProfit(vector& prices) { + int profit = 0; + for (int i = 1; i < prices.size(); ++i) { + int price_diff = prices[i] - prices[i - 1]; + profit += std::max(0, price_diff); + } + return profit; + } +}; +``` + +## 他の人のコードを見てみる + +https://github.com/tokuhirat/LeetCode/pull/38/files +https://github.com/irohafternoon/LeetCode/pull/41/files while文で山と谷を探すやり方は面白いと思った。 +https://github.com/hroc135/leetcode/pull/36/files +https://github.com/goto-untrapped/Arai60/pull/59/files + +## 最終コード + +iを0からprices.size() - 1まで回して、prices[i+1]とprices[i]の差を測るのも考えたが、個人的に未来の価格を見るというのはちょっとだけ直感的に違和感があったのでこちらにした。 + +```cpp +class Solution { +public: + int maxProfit(std::vector& prices) { + int profit = 0; + for (int i = 1; i < prices.size(); ++i) { + int price_diff = prices[i] - prices[i-1]; + profit += std::max(0, price_diff); + } + return profit; + } +}; +```