Leetcode_188. 买卖股票的最佳时机 IV
只能买卖k次,和上一题一样的dp方式,但是当k大于n的一半时,就相当于无限次交易了,这个是没有想到的....
code
class Solution {
public:
int dp[100005][2];
int maxProfit(int k,vector<int>& prices) {
int n=prices.size();
int ans=0;
if(k>2*n){
return maxProfit(prices);
}
for(int i=1;i<=k;i++){
dp[i][0]=-0x3f3f3f3f;
dp[i][1]=0;
}
for(int i=0;i<n;i++){
for(int j=1;j<=k;j++){
dp[j][0]=max(dp[j][0],dp[j-1][1]-prices[i]);
dp[j][1]=max(dp[j][1],dp[j][0]+prices[i]);
cout << dp[j][0] <<" " <<dp[j][1] <<"\n";
ans=max(ans,dp[j][1]);
}
}
return ans;
}
int maxProfit(vector<int>& prices) {
int n=prices.size();
int ans=0;
for(int i=1;i<n;i++){
int c=prices[i]-prices[i-1];
if(c>0){
ans+=c;
}
}
return ans;
}
};