这道题很神奇,看到了show hint,然后按照提示把7-10之间的数拆分来看,发现最大值的序列中全部是3或者2,于是我猜测这可能就是所谓的规律,然后写了如下代码。
public class Solution {
public int integerBreak(int n) {
int val = 1;
if(n <= 3)//当输入为2或者3时,因为要求必须要拆成至少两个数,于是返回结果都要减一
return n-1;
while(n >= 6){//对于其他的输入,拆分后的结果已经大于值本身了。
n-=3;
val *= 3;
}
if(n == 5){
val*=6;
}else{
val*=n;
}
return val;
}
}
证明:请参考:http://blog.youkuaiyun.com/liyuanbhu/article/details/51198124