题目描述
给你一根长度为n
的绳子,请把绳子剪成整数长度的m
段(m、n都是整数,n>1
并且m>1
),每段绳子的长度记为k[0],k[1]...k[m]
。请问k[0]*k[1]*...*k[m]
可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
示例1:
1 | 输入: 2 |
示例2:
1 | 输入: 10 |
提示:2 <= n <= 58
思路
- 当所有绳段长度相等时,乘积最大
- 根据数学计算得出最优的绳段长度是
3
- 剪绳规则:尽可能剪成多个
3
,最后一段的长度可能是0
、1
、2
- 为
0
时,说明能剪成多个3
- 为
1
时,需要拿出一个3
来加上1
变成4
,因为4
>3
- 为
2
时,直接乘在后面即可
- 为
代码
1 | class Solution{ |
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。