Best Time to Buy and Sell Stock IV LeetCode solution in C++

1
class Solution {
2
public:
3
int solve(int ind, int buy, int k, vector<int> &prices, vector<vector<vector<int>>> &dp) {
4
if (k == 0 || ind == prices.size()) return 0;
5
if (dp[ind][buy][k] != -1) return dp[ind][buy][k];
6
if (buy) {
7
return dp[ind][buy][k] = max(-prices[ind] + solve(ind + 1, 0, k, prices, dp),
8
solve(ind + 1, 1, k, prices, dp));
9
}
10
return dp[ind][buy][k] = max(prices[ind] + solve(ind + 1, 1, k - 1, prices, dp),
11
solve(ind + 1, 0, k, prices, dp));
12
}
13
int maxProfit(int k, vector<int> &prices) {
14
vector<vector<vector<int>>> dp(prices.size(), vector<vector<int>>(2, vector<int>(k + 1, -1)));
15
return solve(0, 1, k, prices, dp);
16
}
17
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0