
/*
* @lc app=leetcode.cn id=123 lang=javascript
*
* [123] 买卖股票的最佳时机 III
*/
// @lc code=start
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function (prices) {
if (prices.length === 0) {
return 0
}
// 创建一个二维数组,第一行第一列补0
const dp = Array.from(Array(3), () => new Array(prices.length))
for (let i = 0
dp[0][i] = 0
}
for (let i = 0
dp[i][0] = 0
}
// 将之前的取最大值到maxProfit,减少计算量
for (let i = 1
let maxProfit = -prices[0]
for (let j = 1
dp[i][j] = Math.max(dp[i][j - 1], prices[j] + maxProfit)
maxProfit = Math.max(maxProfit, dp[i - 1][j] - prices[j])
}
}
return dp[2][prices.length - 1]
}
// @lc code=end