Skip to content

Commit

Permalink
Create 188.Best-Time-to-Buy-and-Sell-Stock-IV.cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
wisdompeak authored Jun 4, 2019
1 parent e3f0499 commit de9f8ec
Showing 1 changed file with 40 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
class Solution {
public:
int maxProfit(int k, vector<int>& prices)
{
int n = prices.size();

if (k>=n/2)
{
int result = 0;
for (int i=1; i<prices.size(); i++)
if (prices[i]>prices[i-1])
result+=prices[i]-prices[i-1];
return result;
}

vector<int>hold(k+1, INT_MIN/2);
vector<int>sold(k+1, INT_MIN/2);

hold[0] = 0;
sold[0] = 0;

for (int i=0; i<n; i++)
{
auto hold_old = hold;
auto sold_old = sold;

for (int j=1; j<=k; j++)
{
hold[j] = max (sold_old[j-1]-prices[i], hold_old[j] );
sold[j] = max (hold_old[j]+prices[i], sold_old[j] );
}

}

int result = INT_MIN;
for (int j=0; j<=k; j++)
result = max(result, sold[j]);
return result;
}
};

0 comments on commit de9f8ec

Please sign in to comment.