/**
* 除了1,其他两数相加小于等于两数相乘,且分成3是最划算的,只有当分成3会导致分出1的时候(分完3剩了4),将最后的4分成两个2
*/
class Solution {
public int integerBreak(int n) {
if (n <= 3) {
return n - 1;
}
int x = n % 3;
switch (x) {
case 0 : return (int)Math.pow(3, n / 3);
case 1 : return (int)Math.pow(3, n / 3 - 1) * 4;
default : return (int)Math.pow(3, n / 3) * 2;
}
}
}
该博客讨论了一个数学问题,即如何最有效地将整数n分解为若干个正整数之和,使得这些数的乘积最大。作者提出,当n大于3时,最优策略通常是将其分为3个尽可能相等的部分,除非n除以3余1,此时将剩余的4分为两个2。算法基于这个观察,使用switch-case结构实现整数分解,并返回最大乘积。

被折叠的 条评论
为什么被折叠?



