代码随想录刷题第四十一天| 343. 整数拆分 ● 96.不同的二叉搜索树

2024-01-07 21:38:57

代码随想录刷题第四十一天

** 今天的两道题都非常难,二刷的时候要重点整理思路**

整数拆分 (LC 343)

题目思路:

在这里插入图片描述

代码实现:

class Solution:
    def integerBreak(self, n: int) -> int:
        dp = [0 for _ in range(n+1)]
        dp[2] = 1
        
        for 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] = 1

        for i in range(1, n+1):
            for j in range(i):
                dp[i] += dp[j] * dp[i-1-j]
        print(dp)
        return dp[n]

文章来源:https://blog.csdn.net/shaozi25/article/details/135436844
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。