[LeetCode] Integer Break

来源:互联网 发布:中信出版社 知乎 编辑:程序博客网 时间:2024/05/21 05:40

Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maximum product you can get.

For example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 + 3 + 4).

Note: you may assume that n is not less than 2.

Hint:

  1. There is a simple O(n) solution to this problem.
  2. You may check the breaking results of n ranging from 7 to 10 to discover the regularities.

解题思路

7:34=12
8:332=18
9:333=27
10:334=36

规律:大于4时,不断寻找因子3,并将其相乘。

实现代码

// Runtime: 0 mspublic class Solution {    public int integerBreak(int n) {        if (n == 2 || n == 3) {            return n - 1;        }        int base = 1;        while (n > 4) {            base *= 3;            n -= 3;        }        return base * n;    }}
0 0
原创粉丝点击