题目:
思路+代码:
思路:数学推理可以证明,当长度大于3时,划分为每段长度为3时乘积最大;
然后考虑:取余后的0,1,2;
时间复杂度:O(1)
空间复杂度:O(1)
import math
class Solution:
def cuttingRope(self, n: int) -> int:
# 思路:数学推理可以证明,当长度大于3时,划分为每段长度为3时乘积最大;
# 然后考虑:取余后的0,1,2;
if n <= 3: # 小于3 最长n-1
return n-1
a, b = n // 3, n % 3
if b==0: return int(math.pow(3, a))
if b==1: return int(math.pow(3, a-1)*4)
return int(math.pow(3, a)*2 )