343. Integer Break
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.
/*发现规律 都是在3的倍数上进行拆分会得到最大乘机
2=1+1 p=1*1=1
3=2+1 p=2*1=2
4=2+2 p=2*2=4
5=3+2 p=3*2=6
6=3+3 p=3*3=9
7=3+4 p=3*4=12
8=3+3+2 p=3*3*2=18
9=3+3+3 p=3*3*3=27
10=3+3+4 p=3*3*4=36
*/
public class Solution {
public int integerBreak(int n) {
int p=1;
if(n<4){
p= n-1;
}else{
while(n>2){
p=p*3;
n=n-3;
}
if(n%3==2){p=p*2;};//当余数为2时,直接生意
if(n%3==1){p=p/3*4;};//当余数为1时,证明最后一个加数为4,就要把p除以3后在乘以4
}
return p;
}
}