From dc1f0c4c0096013799416664894c5194dc7e1f52 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 28 Feb 2025 23:13:39 +0800 Subject: chore(store): move everything to store. --- store/works/solutions/leetcode/cpp/123.cpp | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 store/works/solutions/leetcode/cpp/123.cpp (limited to 'store/works/solutions/leetcode/cpp/123.cpp') diff --git a/store/works/solutions/leetcode/cpp/123.cpp b/store/works/solutions/leetcode/cpp/123.cpp new file mode 100644 index 0000000..ecf35c4 --- /dev/null +++ b/store/works/solutions/leetcode/cpp/123.cpp @@ -0,0 +1,34 @@ +#include +#include +using std::vector; + +#include + +class Solution +{ +public: + // 0 -> after buy for the first time + // 1 -> after sell for the first time + // 2 -> after buy for the second time + // 3 -> after sell for the second time + + int maxProfit(vector &prices) + { + int day_count = prices.size(); + + int state_0 = -prices[0]; + int state_1 = 0; + int state_2 = -prices[0]; + int state_3 = 0; + + for (int day = 1; day < day_count; day++) + { + state_0 = std::max(state_0, -prices[day]); + state_1 = std::max(state_1, state_0 + prices[day]); + state_2 = std::max(state_2, state_1 - prices[day]); + state_3 = std::max(state_3, state_2 + prices[day]); + } + + return std::max({state_0, state_1, state_2, state_3}); + } +}; -- cgit v1.2.3