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; + } +}; +```