题解 | #牛群买卖计划II#
题目考察的知识点
本题考察的知识点是动态规划和数组操作。
题目解答方法的文字分析
在题目解答方法的文字分析中,我首先介绍了动态规划的思想,并根据题目要求给出了具体的递推公式,以及如何利用动态规划填充数组dp
的方法。
本题解析所用的编程语言
使用了JavaScript作为编程语言进行实现。JavaScript是一种脚本语言,常用于Web开发,也可以用于算法编程。我使用了JavaScript的数组和循环等基本语法,以及Math.max()
函数来比较和获取最大值。
完整且正确的编程代码
function maxProfitII(prices, k) {
const n = prices.length;
const dp = Array.from({ length: n }, () => Array.from({ length: k + 1 }, () => 0));
for (let j = 1; j <= k; j++) {
let maxDiff = -prices[0]; // 保存每一次交易前的最大差值
for (let i = 1; i < n; i++) {
dp[i][j] = Math.max(dp[i - 1][j], maxDiff + prices[i]);
maxDiff = Math.max(maxDiff, dp[i - 1][j - 1] - prices[i]);
}
}
return dp[n - 1][k];
}
const prices = [3, 2, 6, 5, 0, 3];
const k = 2;
console.log(maxProfitII(prices, k)); // Output: 7
题解 | 前端刷题 文章被收录于专栏
题目考察的知识点 题目解答方法的文字分析 本题解析所用的编程语言 完整且正确的编程代码