LC343. 整数拆分
解题思路
按照动规五部曲
-
确定dp数组及其下标的含义
dp[i], i为要被拆分的整数,dp[i]为要被拆分的整数的最大乘积
-
确定递推公式
dp[i] = max(dp[i], j * (i - j), j * dp[i - j])
j * (i - j)是将数字拆分成两个正整数时的最大值
j * dp[i - j] 是将数字拆分成两个以上时的最大值,由于dp[i]前面以及被计算过了,所以可以直接得出拆分更多正整数的乘积
-
初始化dp数组
整数拆分0和1没有任何意义,所以只要关注2就行了,dp[2] = 1
-
确定遍历顺序
i从3开始遍历
j从1开始遍历
-
举例推导dp数组
代码
Python
1 | class Solution: |
C++
1 | class Solution { |
Go
1 | func integerBreak(n int) int { |
评论
