給你一根長(zhǎng)度為 n 的繩子,請(qǐng)把繩子剪成整數(shù)長(zhǎng)度的 m 段(m、n都是整數(shù),n>1并且m>1),每段繩子的長(zhǎng)度記為 k[0],k[1]...k[m-1] 。請(qǐng)問(wèn) k[0]k[1]...*k[m-1] 可能的最大乘積是多少?例如,當(dāng)繩子的長(zhǎng)度是8時(shí),我們把它剪成長(zhǎng)度分別為2、3、3的三段,此時(shí)得到的最大乘積是18。
示例 1:
輸入: 2
輸出: 1
解釋: 2 = 1 + 1, 1 × 1 = 1
示例 2:
輸入: 10
輸出: 36
解釋: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36
提示:
2 <= n <= 58
思路:
推論一: 將繩子 以相等的長(zhǎng)度等分為多段 ,得到的乘積最大。
推論二: 盡可能將繩子以長(zhǎng)度 3 等分為多段時(shí),乘積最大。
python3解法:
class Solution:
def cuttingRope(self, n: int) -> int:
if n <= 3 : return n-1
a, b = n // 3, n % 3
if b == 0:
return int(math.pow(3, a))
elif b == 1:
return int(math.pow(3, a - 1) * 4)
else:
return int(math.pow(3,a) * 2)
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof/solution/mian-shi-ti-14-i-jian-sheng-zi-tan-xin-si-xiang-by/
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。