结论当整数中拆分成3和2时(2的数量不大于2个)积最大
证明(参考y总):
前提:假设结果为a1 - an
- ai < 5
反证法:若ai >=5,则ai = (ai - 3)*3 = 3ai - 9 > ai
等价于 ai > 4.5
ai > ai
所以 ai <5 - ai 可以不为4
4 = 2 * 2 - 2的数量不大于2
2 + 2 + 2 = 6
2 * 2 * 2 = 8 < 3 * 3
结论成立
class Solution {
public int cuttingRope(int n) {
if(n <= 3) return 1 * (n- 1);
int sum = 1;
while(n >= 5) {
n -= 3;
sum *=3;
}
return sum * n;
}
}