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

2025-3-23 leetcode刷题情况(动态规划)

一、343.整数拆分

1.题目描述

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

2.代码

3.思路

首先创建一个长度为n + 1的数组dp用于存储每个正整数拆分后的最大乘积,初始化dp[2]为 1 。接着从 3 开始遍历到n,对于每个数i,再遍历从 1 到i - j的数j,考虑两种拆分情况:一是直接将i拆分为ji - j,计算它们的乘积;二是将i拆分为j和可继续拆分的i - j,用j乘以dp[i - j]。取这两种情况的最大值,并更新dp[i]。最终返回dp[n],即n拆分后的最大乘积。

二、96.不同的二叉搜索树

1.题目描述

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

2.代码

3.思路

首先创建长度为 n + 1 的数组 dp 存储结果,初始化 dp[0] 和 dp[1] 为 1,分别代表空树和单节点树的情况。接着从 2 到 n 遍历节点数 i,对于每个 i,再从 1 到 i 遍历以不同节点 j 为根的情况。以 j 为根时,左子树有 j - 1 个节点,右子树有 i - j 个节点,根据乘法原理,以 j 为根的不同二叉搜索树数量是 dp[j - 1] 与 dp[i - j] 的乘积,将这些乘积累加更新 dp[i],最终返回 dp[n] 作为结果。

相关文章:

  • 不能解析域名怎么回事?
  • 游戏引擎学习第180天
  • SQL中体会多对多
  • C++11中智能指针的使用(shared_ptr、unique_ptr、weak_ptr)
  • FPGA_YOLO(三)
  • Python使用SVC算法解决乳腺癌数据集分类问题——寻找最佳核函数
  • 【UEFI】关于Secure Boot
  • 2.3.5 覆盖率数据的合并
  • 【前端】使用 HTML、CSS 和 JavaScript 创建一个数字时钟和搜索功能的网页
  • 计算机二级:基础操作题
  • 大模型在支气管哮喘手术全流程风险预测与治疗方案制定中的应用研究
  • 【HTML 基础教程】HTML 编辑器
  • 【Java 优选算法】链表
  • C++:异常的深度解析
  • STM32学习笔记之常见外设汇总
  • 【QA】外观模式在Qt中有哪些应用?
  • 【C++】Chapter02 内存管理
  • 群体智能优化算法-多版本优化器(Multi-Verse Optimizer, MVO,含Matlab源代码)
  • (Arxiv-2025)MagicDistillation:用于大规模人像少步合成的弱到强视频蒸馏
  • notify_one() 会阻塞吗?
  • 太空飞梭项目起火,南宁方特东盟神画:明火已扑灭,无人受伤
  • 商务部新闻发言人就中美经贸对话磋商情况答记者问
  • 即日起,“应急使命·2025”演习公开征集新质救援能力
  • 微软上财季净利增长18%:云业务增速环比提高,业绩指引高于预期
  • “面具女孩”多次恐吓电梯内两幼童,当事女孩及家长道歉后获谅解
  • 从孔雀尾巴到蒙娜丽莎,一个鸟类学博士眼中的“美”