87. Leetcode 343. 整数拆分 (动态规划-基础题)
给定一个正整数 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。
步骤一、确定状态:
确定dp数组及初始化含义 dp[i]:分拆数字i,可以得到的最大乘积为dp[i]。
步骤二、推断状态方程:
1.j×(i−j)可以得到一个i的乘积, 这个是每个数拆分成2个正整数相加的情况的乘积 2. j×dp[i−j]
3. dp[i]
4.从当前j这里获得的最大乘积为:max(j×(i−j),j×dp[i−j]) 而当前i处获得的最大乘积: dp[i]=max(max(j×(i−j),j×dp[i−j]),dp[i])
步骤三、规定初始条件:
初始条件:
dp[0], d[1]是没法分解的,所以从dp[2]开始,初始化为1即可
步骤四、计算顺序:
这个题目需要两层遍历了,因为当前i的dp值,需要依赖于前面的所有dp值。 i从3到n遍历
j从1到i−1遍历
class Solution:def integerBreak(self, n: int) -> int:dp = [0] * (n+1)dp[2] = 1for i in range(3, n+1):for j in range(1, i):dp[i] = max(max(j*(i-j),j*dp[i-j]), dp[i])return dp[n]
87. Leetcode 343. 整数拆分 (动态规划-基础题)相关推荐
- LeetCode 343. 整数拆分(动态规划)
题目描述 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1 ...
- leetcode - 343. 整数拆分
343. 整数拆分 -------------------------------------------- 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获 ...
- LeetCode 343. 整数拆分(DP)
1. 题目 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = ...
- leetcode 343. 整数拆分(Integer Break)
目录 题目描述: 示例 1: 示例 2: 解法: 题目描述: 给定一个 正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: ...
- 84. Leetcode 70. 爬楼梯 (动态规划-基础题)
假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢?示例 1:输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶. 1. 1 阶 ...
- LeetCode-动态规划基础题-343. 整数拆分
描述 343. 整数拆分 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 ...
- 整数拆分 python_LeetCode 343. 整数拆分 | Python
343. 整数拆分 题目 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 ...
- 剑指Offer 14- I. 剪绳子(Medium)/ 剪绳子 II(Medium)/ 343. 整数拆分(Medium)
剑指Offer 14- II. 剪绳子 II(Medium) 343. 整数拆分(Medium) [题目连接] 题解 剪绳子(数学推导 / 贪心思想,清晰图解) 图解[暴力递归][记忆化技术][动态规 ...
- 《dp补卡——343. 整数拆分、96. 不同的二叉搜索树》
343. 整数拆分 1.确定dp数组以及下标含义. dp[i]:分拆数字i,可以得到的最大的乘积 2.确定递推公式: dp[i]最大乘积出处:从1遍历j到i,j * dp[i-j] 与 j * (i- ...
最新文章
- Spring Boot与ActiveMQ的集成
- 《当代 95 后の北上广出逃计划》
- Java—FileOperator
- 1.VMware Workstation 12 中安装CentOS
- W3C DOM操作之创建新节点
- vue.js中的组件是什么?
- 大数据之-Hadoop3.x_MapReduce_WordCount案例集群运行---大数据之hadoop3.x工作笔记0093
- static_cast、dynamic_cast、reinterpret_cast、和const_cast
- android sendmessage和post的区别,Handler的sendMessage和postDelay的区别
- java时区_Java时区
- c# word文档与二进制数据的相互转换
- h5制作的简易单机球球大作战
- UiPath调用超级鹰识别验证码
- 物联网和工业物联网有什么区别?
- Science:拟南芥根系三萜化合物塑造特异的微生物组
- 简单的定时任务(项目发布时启动,停止时任务结束)
- 借呗还完之后为什么关闭了_蚂蚁借呗怎么突然关闭了 蚂蚁借呗关闭后怎么重开...
- html语言web应用开发,使用HTML5框架加速Web开发
- 短信验证码(俗称接码平台)分享定义是什么
- 【Win8自带微软输入法删除图解】
热门文章
- [LeetCode] Combinations
- 即使是一个技术人员,也需要知道沟通的重要性
- C#连接EXCEL数据库
- Virtual ListView效率对比
- CSP认证201312-2 ISBN号码[C++题解]:简单题
- PAT甲级1004 Counting Leaves (30分):[C++题解]树、邻接表存储树、dfs遍历树
- C++容器map可以排序吗?
- python load_Python实例:numpy.load()的使用
- gps卫星位置计算程序matlab_卫星空间大地测量中GPS周跳探测的四种方法
- flink checkpoint 恢复_Flink断点恢复机制