Best Time to Buy and Sell Stock IV
HardArrayDynamic Programming
Solution
export function maxProfitIV(k: number, prices: number[]): number {
const n = prices.length;
if (n === 0) return 0;
const dp: number[] = new Array(k + 1).fill(0);
const minPrices: number[] = new Array(k + 1).fill(prices[0]);
for (let i = 1; i < n; i++) {
for (let j = 1; j <= k; j++) {
minPrices[j] = Math.min(minPrices[j], prices[i] - dp[j - 1]);
dp[j] = Math.max(dp[j], prices[i] - minPrices[j]);
}
}
return dp[k];
}