文创产品设计方案模板,萧山市seo关键词排名,php p2p网站开发,网页微信怎么换行文章目录 整数拆分题解#xff08;动态规划#xff09;贪心 不同的二叉搜索树题解 整数拆分
CategoryDifficultyLikesDislikesContestSlugProblemIndexScorealgorithmsMedium (62.22%)11660--0
Tags
数学 | 动态规划
Companies
给定一个正整数 n #xff0c;将其拆分为… 文章目录 整数拆分题解动态规划贪心 不同的二叉搜索树题解 整数拆分
CategoryDifficultyLikesDislikesContestSlugProblemIndexScorealgorithmsMedium (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 codestart
class Solution {
public:int integerBreak(int n) {vectorint dp(n1);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)
不同的二叉搜索树
CategoryDifficultyLikesDislikesContestSlugProblemIndexScorealgorithmsMedium (70.86%)22130--0
Tags Companies
给你一个整数 n 求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种返回满足题意的二叉搜索树的种数。
示例 1 输入n 3
输出5示例 2
输入n 1
输出1提示
1 n 19 Discussion | Solution
题解
// lc codestart
class Solution {
public:int numTrees(int n) {vectorint dp(n1);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#思路)