1
var maxProfit = function (k, prices) {2
const len = prices.length;3
let dp = new Array(len).fill(0);4
dp = dp.map(() => new Array(2).fill(0).map(() => new Array(k + 1).fill(-1)));5
const solve = (day = 0, cap = k, buy = 0) => {6
if (day == len || cap == 0) return 0;8
if (dp[day][buy][cap] != -1) return dp[day][buy][cap];11
notake = solve(day + 1, cap, buy);13
take = solve(day + 1, cap, 1) - prices[day];15
take = solve(day + 1, cap - 1, 0) + prices[day];17
return (dp[day][buy][cap] = Math.max(take, notake));