参考链接:
(1)点击打开链接
(2)点击打开链接
class Solution {
public:
int maxProfit(int k, vector<int>& prices) {
if(prices.size() == 0){
return 0;
}
if( k > prices.size()){
return solvemax(prices);
}
int g[k+1] = {0};
int l[k+1] = {0};
int diff = 0;
for(int i = 0 ; i < prices.size() - 1 ;i++){
diff = prices[i+1] - prices[i];
for(int j = k ; j >=1 ;j--){
l[j] = max(g[j-1] + max(diff, 0) , l[j] + diff);
g[j] = max(l[j] , g[j]);
}
}
return g[k];
}
int solvemax(vector<int>& prices){
int len = prices.size();
int max = 0;
int diff =0;
for(int j = 0 ;j<len-1;j++){
if(prices[j+1]>prices[j]){
diff = prices[j+1]-prices[j];
max = max + diff;
}
}
return max;
}
};
下面的函数是用来处理当给出的k远远大于prices.size(),就是Best Time to Buy and Sell Stock II的情况,经所有的diff。