public class Solution
{
public int IntegerBreak(int n)
{
if (n == )
{
return ;
}
else if (n == )
{
return ;
}
var max = int.MinValue;
for (int i = ; i <= n / ; i++)
{
var div = n / i;
var mod = n % i;
var cur = ;
if (mod == )
{
cur = Convert.ToInt32(Math.Pow(i, div));
}
else
{
var cur1 = Convert.ToInt32(Math.Pow(i, div - ) * (i + mod));
var cur2 = Convert.ToInt32(Math.Pow(i, div)) * mod;
cur = Math.Max(cur1, cur2);
}
if (cur > max)
{
max = cur;
}
else
{
break;
}
}
return max;
}
}

https://leetcode.com/problems/integer-break/#/description

这道题的解题思路是,从2到n/2每个值依次进行尝试,对于每一个值,计算这种情况下的因子乘积,

如果是可以被整除,则计算当前值的“倍数的次方”;如果不能被整除,则分两种情况分别计算。

第一种是:将某一个因子与余数合并为一个因子。

第二种是:剩余的余数做一个单独的因子。

每种情况都计算出其因子的乘积,然后找最大值。

举例来说,输入参数n=12,

i=2,执行21行,cur=2^6=64,更新max=64

i=3,执行21行,cur=3^4=81,更新max=81

i=4,执行21行,cur=4^3=64,保持max=81

i=5,执行25~27,cur1=5^(2-1) * (5+2)=5*7=35,cur2=5^2 * 2=5*5*2=50,cur=50,保持max=81

i=6,执行21行,cur=6^2=36,保持max=81

执行完毕,最终结果为81。

补充一个使用dp的解决方案:

 public class Solution
{
public int IntegerBreak(int n)
{
int[] dp = new int[n + ];
dp[] = ;
for (int i = ; i <= n; i++)
{
for (int j = i-; j >=; j--)
{
var premax = dp[i - j];
var distance = i - j;
var cur = Math.Max(premax, distance) * j;
dp[i] = Math.Max(dp[i], cur);
}
}
return dp[n];
}
}

leetcode343的更多相关文章

  1. [Swift]LeetCode343. 整数拆分 | Integer Break

    Given a positive integer n, break it into the sum of at least two positive integers and maximize the ...

  2. leetcode343 Integer Break

    思路: 将n不断拆分3出来直至其小于或等于4. 实现: class Solution { public: int integerBreak(int n) { ] = {, , , }; ) retur ...

  3. LeetCode343 整数拆分详解

    题目详情 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1 ...

  4. LeetCode 343

    Integer Break Given a positive integer n, break it into the sum of at least two positive integers an ...

随机推荐

  1. 实验二. 使用LoadRunner进行压力测试

    实验二. 使用LoadRunner进行压力测试 一. LoadRunner 概要介绍   1.1简介   LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具.通过以模拟上千万用户实 ...

  2. 剑指offer--37.和为S的两个数字

    链接:https://www.nowcoder.com/questionTerminal/390da4f7a00f44bea7c2f3d19491311b来源:牛客网@华科渣硕 不要被题目误导了!证明 ...

  3. css 中 overflow: hidden清楚浮动的真正原因

    1. 先上一段代码清楚浮动的代码, 外层ul设置overflow为hidden, 内层li设置float为left左浮动 <!DOCTYPE html> <html> < ...

  4. macOS 下 Visual Studio Code(VSCODE)安装配置及应用

    Visual Studio Code 重新定义了 Code 编辑. 在任何操作系统上编辑和调试应用程序内置 Git 支持1000 种以上的扩展免费和开源 为什么使用VSCODE? 我们来看看以下功能: ...

  5. Lua学习---编译生成lua和luac

    众所周知,Lua是一种强大的脚本语言,并且这种语言是用C语言实现的.为什么要学习这门语言?因为它可以增强我看C语言代码的功底. 我下的Lua版本是Lua5.3,关于Lua5.3的简介如下: http: ...

  6. Go开发Struct转换成map两种方式比较

    最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接对struct结构进行操作的方法,有部分API是通过map进行数据库相关操作,那么就需要 ...

  7. python学习之准备

    快速入门:十分钟学会Pythonhttp://python.jobbole.com/43922/python框架http://www.elias.cn/Python/HomePage#toc14[Py ...

  8. DbEntry 默认 主键ID为long

    DbEntry 默认 主键ID为long,如果自己表中的主键ID为int,可以通过以下方式修改: public class Company :DbObjectModel<Company,int& ...

  9. Spring源码学习之:ClassLoader学习(5)-自测

    [一]测试目的(ClassLoader的作用) 1:测试涉及三个jar包,nonbankcard-configure-0.0.1-SNAPSHOT.jar,nonbankcard-persist-0. ...

  10. Ambari的API调用

    GET api/v1/clusters/HDP/configurations可以获得所有的配置信息(例如,http://hdp0:8080/api/v1/clusters/HDP/configurat ...