题目:原题链接(中等)

标签:数学

解法 时间复杂度 空间复杂度 执行用时
Ans 1 (Python) 最坏情况时间复杂度 : O ( N 2 ) O(N^2) O(N2) O ( N ) O(N) O(N) 40ms (80.65%)
Ans 2 (Python) O ( N ) O(N) O(N) O ( 1 ) O(1) 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