JavaScript|LeetCode|动态规划|343.整数拆分

法1:动态规划
看了题解
想法:

  1. “给定一个正整数 n,将其拆分为至少两个正整数的和”。则 n >= 2
  2. 用数组dp保存整数 1 ~ n 经拆分后的最大乘积(后续需用到dp[1] = 1,比如 3 = 1 + 2)
  3. 拆分整数 i 时,先将其拆分为 i - j 和 j;最大值在下面几种情况中产生:
  • (i - j) * j:即 i - j 和 j 均不再拆分
  • dp[i - j] * dp[j]:即 i - j 和 j 均再拆分
  • dp[i - j] * j:即只拆分 i - j
  • (i - j) * dp[j] :即只拆分 j
  • dp[i]:即之前 i 的拆分中的最大乘积
    注:第3种情况与第4种情况本质上是一样的,因为j = 1 ~ i - 1,故只要考虑一个即可
/** 
* @param {number} n 
* @return {number} 
*/
var integerBreak = function(n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值