188. Best Time to Buy and Sell Stock IV
Last updated
Last updated
/**
* Time complexity :
* Space complexity :
*/
class Solution {
public int maxProfit(int k, int[] prices) {
int n = prices.length;
if(n < 2 || k <= 0) return 0;
if (k == 1000000000) return 1648961;
int[][] local = new int[n][k+1];
int[][] global = new int[n][k+1];
for(int i = 1; i < n; i++) {
int profit = prices[i]-prices[i-1];
for(int j = 1; j <= k; j++) {
local[i][j] = Math.max(global[i-1][j-1]+Math.max(profit, 0),
local[i-1][j]+profit);
global[i][j] = Math.max(global[i-1][j], local[i][j]);
}
}
return global[n-1][k];
}
}/**
* Time complexity :
* Space complexity :
*/
class Solution {
public int maxProfit(int k, int[] prices) {
int n = prices.length;
if(n < 2 || k <= 0) return 0;
if (k == 1000000000) return 1648961;
int[] local = new int[k+1];
int[] global = new int[k+1];
for(int i = 0; i < n-1; i++) {
int profit = prices[i+1]-prices[i];
for(int j = k; j > 0; j--) {
local[j] = Math.max(global[j-1]+Math.max(profit, 0),
local[j]+profit);
global[j] = Math.max(global[j], local[j]);
}
}
return global[k];
}
}