查看网站信息图标怎么做,wordpress call to un,鄂尔多斯市网站建设,公司法人查询系统dp
1、343. 整数拆分
题目#xff1a; 给定一个正整数 n #xff0c;将其拆分为 k 个 正整数 的和#xff08; k 2 #xff09;#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。
输入: n 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。
思路…dp
1、343. 整数拆分
题目 给定一个正整数 n 将其拆分为 k 个 正整数 的和 k 2 并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。
输入: n 10 输出: 36 解释: 10 3 3 4, 3 × 3 × 4 36。
思路
老办法画图理解10是如何分为334343433呢这都是最大的值27例如i3的时候在递推公式有一个jdp[i-j]就是这一步实现了334 or 343因为dp[i-j] dp[7] 34 or 4*3普及一个概念在相同的总和下例如长宽高最近圆形的最完美所得之积最大体积也是如此例如球形这是我在初二左右时候写数学题悟出来的
func integerBreak(n int) int {// 理解了写dp : make([]int, n1)dp[1]1dp[2]1for i:3;in1; i {for j:1; ji; j {dp[i] max(dp[i], max(j*(i-j),j*dp[i-j]))}}return dp[n]
}
func max(a, b int) int {if ab {return a}; return b}2、96. 不同的二叉搜索树
题目 给你一个整数 n 求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种返回满足题意的二叉搜索树的种数。 输入n 3 输出5
思路
i代表dp[i]有多少个不同的二叉搜索树j代表头节点为j同时是考虑了二叉搜索树特性的情况
func numTrees(n int) int {// 代码一刷卡哥视频讲的很好容易理解的dp : make([]int, n1)dp[0] 1for i:1; in1; i {for j:1; ji; j {dp[i] dp[i-j]*dp[j-1]}}return dp[n]
}