代码随想录算法训练营第四十一天

昨天是摸鱼的一天,不过把电脑换了个位置,今天努力完成两天的任务,就可以玩啦!!加油!

 343. 整数拆分 

我写的其实有点解释不通dp[0]和dp[1]

class Solution {
public:
    int integerBreak(int n) {
        vector<int>dp(n+1,0);
        if(n == 2)return 1;
        dp[0] = 0;
        dp[1] = 1;
        for(int i = 0;i <= n;i++){
            for(int j = 1;j <= i;j++){
                dp[i] = max(dp[i],max(j*(i-j),j*dp[i-j]));
            }
        }
        return dp[n];
    }
};

用代码随想录的更好一点,主要的思想其实是j * dp[i-j]这里,然后就是一定会有j * (i-j)两个数的可能性,j * dp[i-j]实际上更偏向于两个及以上的情况,会忽略一些只有两个数的情况,比如4就过不去,因为dp[2] = 1,2*dp[2]实际上是2*1*1。

class Solution {
public:
    int integerBreak(int n) {
        vector<int> dp(n + 1);
        dp[2] = 1;
        for (int i = 3; i <= n ; i++) {
            for (int j = 1; j <= i / 2; j++) {
                dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));
            }
        }
        return dp[n];
    }
};

 96.不同的二叉搜索树 

这两句话要细品,所以是(左子树种类)dp[x]  * (右子树种类)dp[x]

dp[i] : 1到i为节点组成的二叉搜索树的个数为dp[i]。

也可以理解是i个不同元素节点组成的二叉搜索树的个数为dp[i] ,都是一样的。

class Solution {
public:
    int numTrees(int n) {
        vector<int>dp(n+1,0);
        if(n <= 2)return n;
        dp[0] = 1;
        dp[1] = 1;
        dp[2] = 2;
        for(int i = 3;i <= n;i++){
            for(int j = 1;j<=i;j++){
                dp[i] += dp[j-1] * dp[i-j];  //左子树个数*右子树个数
            }
        }
        return dp[n];
    }
};

这题有点难想,同时有点想当然。好难啊

相关推荐

  1. 代码随想算法训练

    2024-05-04 04:08:01       33 阅读
  2. 代码随想算法训练|leetcode309、714题

    2024-05-04 04:08:01       106 阅读
  3. 代码随想算法训练

    2024-05-04 04:08:01       35 阅读
  4. 代码随想算法训练

    2024-05-04 04:08:01       39 阅读
  5. 代码随想算法训练|二叉树

    2024-05-04 04:08:01       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-04 04:08:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-04 04:08:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-04 04:08:01       82 阅读
  4. Python语言-面向对象

    2024-05-04 04:08:01       91 阅读

热门阅读

  1. Delphi10和12的FDConnection1.GetTableNames参数不一样了

    2024-05-04 04:08:01       37 阅读
  2. 系统架构师英文题目

    2024-05-04 04:08:01       33 阅读
  3. grpc stream发送

    2024-05-04 04:08:01       31 阅读
  4. js中对象转数组常用的方法

    2024-05-04 04:08:01       31 阅读
  5. 嵌入式硬件中优化设计PCB提高焊接质量方法

    2024-05-04 04:08:01       37 阅读
  6. 【LAMMPS学习】八、基础知识(5.6)绝热核/壳模型

    2024-05-04 04:08:01       34 阅读
  7. R语言相关知识点

    2024-05-04 04:08:01       29 阅读
  8. k8s: 从私有仓库harbor获取镜像

    2024-05-04 04:08:01       28 阅读
  9. python安装cx_Oracle 遇到的问题

    2024-05-04 04:08:01       33 阅读