Best Time to Buy and Sell Stock III
class Solution {
public:
int maxProfit(vector<int> &prices) {
int hold1, hold2, release1, release2;
hold1 = hold2 = INT32_MIN;
release1 = release2 = 0;
for (auto &p: prices) {
release2 = max(release2, hold2 + p);
hold2 = max(hold2, release1 - p);
release1 = max(release1, hold1+p);
hold1 = max(hold1, -p);
}
return release2;
}
};