Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maximum product you can get.
For example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 + 3 + 4).
Note: You may assume that n is not less than 2 and not larger than 58.
题意:
将一个整数分成若干数之和,求这些数最大积。
思路:
想不出来。事实上分成3最多时,乘积最大。
证明可参考:LeetCode 第 343 题 (Integer Break)
代码:
class Solution {
public int integerBreak(int n) {
if(n==2)
return 1;
if(n==3)
return 2;
int ans=1;
while(n>4)
{
n-=3;
ans*=3;
}
return ans*n;
}
}