343. 整数拆分¶
给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。
返回 你可以获得的最大乘积 。
示例 1:
示例 2:
提示:
2 <= n <= 58
个人题解¶
- 确定
dp数组:dp[i]代表拆分正整数i获得的最大乘积; - 确定递推公式:
dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j)),可以这样理解,(i - j) * j是把整数i拆分为i - j和j相乘,dp[i - j] * j相当于把整数i拆分为j和dp[i - j],而dp[i - j]代表整数i - j的若干拆分情况中乘积最大的一种; dp数组初始化,根据dp数组定义,dp[0-1]没有初始化的意义,因为无法拆分,只需要从2开始拆分即可,即dp[2] = 1;- 确定遍历顺序:由递推公式,遍历顺序应该为从大到小;
- 举例推导
dp数组,合理。