343. 整数拆分
2<= n <= 58 题目要求n的范围
for (var i = 2; i <= n; i++) { 拆分从i = 2 开始拆分,到i = 3,直到i为n
for (var j = 1; j < i; j++) { 当确定了拆分范围i后,再进一步细分,至少拆一个所以1 <= j < i
mid = Math.max(mid, Math.max(j * (i - j), j * dp[i - j]));针对某一次i = k( 2<= k <= n ),拆分方案不同,生成的结果也不同,新初始化mid = 0,在拆分的过程中,会生成新的mid,我们取最大值就行,且还要考虑j * (i - j)和 j * dp[i - j]最值情况
var integerBreak = function (n) {
var dp = new Array(n + 1).fill(0);
for (var i = 2; i <= n; i++) {
var mid = 0;
for (var j = 1; j < i; j++) {
mid = Math.max(mid, Math.max(j * (i - j), j * dp[i - j]));
}
dp[i] = mid;
}
return dp[n];
};