算法训练营Day40(动态规划)

今天两题都挺有难度,建议大家思考一下没思路,直接看题解,第一次做,硬想很难想出来。

343. 整数拆分

343. 整数拆分 - 力扣(LeetCode)

理解难度大,但学完其实很简单

java 复制代码
class Solution {
    public int integerBreak(int n) {
        //dp[i]:分拆数字i,可以得到的最大乘积为dp[i]。
        int [] dp = new int[n+1];
        dp[0]=0;
        dp[1]=0;
        dp[2]=1;
        for(int i = 3;i<=n;i++){
            for(int j = 1;j<=i/2;j++){
               dp[i] = Math.max(dp[i], Math.max(j*(i-j), j*dp[i-j]));
            }
        }
        return dp[n];
    }
}

96.不同的二叉搜索树

96. 不同的二叉搜索树 - 力扣(LeetCode)

二刷好好学下

java 复制代码
class Solution {
    public int numTrees(int n) {
        //初始化 dp 数组
        int[] dp = new int[n + 1];
        //初始化0个节点和1个节点的情况
        dp[0] = 1;
        dp[1] = 1;
        for (int i = 2; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                //对于第i个节点,需要考虑1作为根节点直到i作为根节点的情况,所以需要累加
                //一共i个节点,对于根节点j时,左子树的节点个数为j-1,右子树的节点个数为i-j
                dp[i] += dp[j - 1] * dp[i - j];
            }
        }
        return dp[n];
    }
}
相关推荐
happyprince9 小时前
03-深刻观-CodeX哲学与升华(源码)
算法·ai编程
不会打球的王子9 小时前
Day 27:迁移学习与微调 — 站在巨人的肩膀上
算法
数模竞赛Paid answer10 小时前
2025年中青杯数学建模A题康养城市建设求解全过程论文及程序
算法·数学建模·数据分析·中青杯
网安蟹佬霸10 小时前
密码学安全实战:从加密原理到哈希破解的完整攻防指南
网络·算法·安全·web安全·开源·密码学·哈希算法
yangmu320310 小时前
深度解析:短视频是如何通过“算法+神经机制”劫持用户时间的?
算法
LuminousCPP10 小时前
栈和队列专题(四):LeetCode 232. 用栈实现队列|双栈分工 + 按需迁移 + 摊还 O(1)
c语言·数据结构·笔记·算法·leetcode
tudousisi22211 小时前
01背包8.21
数据结构·算法
ZJU_统一阿萨姆11 小时前
【算子开发】Reduction算子完全指南
人工智能·算法·语言模型
鹿角片ljp20 小时前
LeetCode 46. 全排列|吃透回溯
算法·leetcode·职场和发展
鼎艺创新科技20 小时前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘