当前位置: 首页 > news >正文

算法训练Day40:343. 整数拆分 96.不同的二叉搜索树

文章目录

  • 整数拆分
    • 题解(动态规划)
    • 贪心
  • 不同的二叉搜索树
    • 题解

整数拆分

CategoryDifficultyLikesDislikesContestSlugProblemIndexScore
algorithmsMedium (62.22%)11660--0
Tags

数学 | 动态规划

Companies

给定一个正整数 n ,将其拆分为 k正整数 的和( k >= 2 ),并使这些整数的乘积最大化。

返回 你可以获得的最大乘积

示例 1:

输入: n = 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。

示例 2:

输入: n = 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。

提示:

  • 2 <= n <= 58

Discussion | Solution

题解(动态规划)

// @lc code=start
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];}
};
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(n)

贪心

本题也可以用贪心,每次拆成n个3,如果剩下是4,则保留4,然后相乘,但是这个结论需要数学证明其合理性!

我没有证明,而是直接用了结论。感兴趣的同学可以自己再去研究研究数学证明哈。

给出我的C++代码如下:

class Solution {
public:int integerBreak(int n) {if (n == 2) return 1;if (n == 3) return 2;if (n == 4) return 4;int result = 1;while (n > 4) {result *= 3;n -= 3;}result *= n;return result;}
};
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

不同的二叉搜索树

CategoryDifficultyLikesDislikesContestSlugProblemIndexScore
algorithmsMedium (70.86%)22130--0
Tags

Companies

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

示例 1:

img

输入:n = 3
输出:5

示例 2:

输入:n = 1
输出:1

提示:

  • 1 <= n <= 19

Discussion | Solution

题解

// @lc code=start
class Solution {
public:int numTrees(int n) {vector<int> dp(n+1);dp[0] = 1;for(int i = 1;i <=n; ++i) {for(int j = 1; j <= i;++j) {dp[i] += dp[j-1] * dp[i-j]; }}return dp[n];}
};
      for(int j = 1; j <= i;++j) {dp[i] += dp[j-1] * dp[i-j]; }}return dp[n];
}

};


参考文章:[代码随想录 (programmercarl.com)](https://programmercarl.com/0096.不同的二叉搜索树.html#思路)
http://www.lryc.cn/news/62343.html

相关文章:

  • 设计模式及代码
  • 9.java程序员必知必会类库之加密库
  • C技能树:for循环:九九乘法表
  • Win10老是蓝屏收集错误信息重启无效怎么办?
  • Redis入门学习笔记【五】Redis在分布式环境下常见的应用场景
  • Python ZIpFile 解惑:GBK 编码与乱码现象
  • 【LeetCode】213. 打家劫舍 II
  • 从初识RabbitMQ到安装了解
  • MySQL(六)-字符串函数的使用解析
  • Zookeeper集群搭建
  • 【计算机视觉 | 目标检测】OVD:Open-Vocabulary Object Detection 论文工作总结(共八篇)
  • C++入门基础知识[博客园长期更新......]
  • ( “树” 之 BST) 501. 二叉搜索树中的众数 ——【Leetcode每日一题】
  • openharmony内核中不一样的双向链表
  • 大文件删除不在回收站里怎么找回
  • Ubuntu22.04部署Pytorch2.0深度学习环境
  • php的面试集结(会持续更新)
  • 谁在成为产业经济发展的推车人?
  • 上海无纺布制造商【盈兹】申请纳斯达克IPO上市,募资1100万美元
  • Build an SAP Fiori App(一)后面更新中
  • 关于GNSS技术介绍(二)
  • 拿到新的服务器必做的五件事(详细流程,开发必看)
  • 主机防病毒攻略之勒索病毒
  • Win10系统重装过程(一键装机)
  • 查询优化之单表查询
  • ChatGPT写小论文
  • 公共资源包发布流程详解
  • 设计模式简谈
  • day35—选择题
  • mybatis的<foreach>标签使用