数学(简单数论),见注释
class Solution: # 3最适合做底:因为3^2>2^3,3^4>4^3。往上往下都是3为底的情况最大。 # 特殊情况:number = 4,2 * 2 > 3 * 1,因为1在乘法中不起作用。 # 也就是说,尽量乘3,且要保证剩下的是3或者2,而不能是1 def cutRope(self, number: int) -> int: if number <= 3: return number - 1 count = 1 # 这里可以用快速幂降低时间复杂度为log(n/3) # number mod 3 = 1,先弹出因子4; number mod 3 = 2,先弹出因子2 # 然后经典快速幂方法 while number > 3: if number == 4: count *= 4 return count count *= 3 number -= 3 return number * count

京公网安备 11010502036488号