题目:原题链接(中等)
标签:数学
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
Ans 1 (Python) | 最坏情况时间复杂度 : O ( N 2 ) | O ( N ) | 40ms (80.65%) |
Ans 2 (Python) | O ( N ) | O ( 1 ) | 44ms (61.63%) |
Ans 3 (Python) |
解法一(数学):
class Solution:
def integerBreak(self, n: int) -> int:
ans = 0
for m in range(2, n + 1):
a, b = divmod(n, m)
lst = [a + 1 if i < b else a for i in range(m)]
val = 1
for v in lst:
val *= v
if val >= ans:
ans = val
else:
break
return ans % 1000000007
解法二(归纳):
class Solution:
def integerBreak(self, n: int) -> int:
if n == 2:
return 1
if n == 3:
return 2
ans = 1
while n > 4:
ans *= 3
n -= 3
return ans * n