代码随想录刷题第四十一天| 343. 整数拆分 ● 96.不同的二叉搜索树
代码随想录刷题第四十一天
** 今天的两道题都非常难,二刷的时候要重点整理思路**
整数拆分 (LC 343)
题目思路:

代码实现:
class Solution:def integerBreak(self, n: int) -> int:dp = [0 for _ in range(n+1)]dp[2] = 1for i in range(3, n+1):for j in range(1, i):dp[i] = max(dp[i], j*(i-j), j*dp[i-j])return dp[n]
不同的二叉搜索树 (LC 96)
题目思路:

代码实现:
class Solution:def numTrees(self, n: int) -> int:dp = [0] * (n+1)dp[0] = 1for i in range(1, n+1):for j in range(i):dp[i] += dp[j] * dp[i-1-j]print(dp)return dp[n]