343. Integer Break
2018-03-13 23:24
429 查看
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 and not larger than 58.
方法一:回溯算法,时间复杂度很大,程序如下:class Solution {
private long maxProduct = 0, currentProduct = 1;
private int validSize = 0;
public int integerBreak(int n) {
backTracing(n, 1);
return (int)maxProduct;
}
public void backTracing(int n, int i){
if (i > 9||n < 0){
return;
}
if (n == 0&&validSize >= 2){
maxProduct = Math.max(maxProduct, currentProduct);
return;
}
for (int j = i; j <= 9; j ++){
currentProduct *= j;
validSize ++;
backTracing(n - j, j);
currentProduct /= j;
validSize --;
}
}
}方法二:因式分解,分解因子为2和3,原理及程序后续补上。
方法一:回溯算法,时间复杂度很大,程序如下:class Solution {
private long maxProduct = 0, currentProduct = 1;
private int validSize = 0;
public int integerBreak(int n) {
backTracing(n, 1);
return (int)maxProduct;
}
public void backTracing(int n, int i){
if (i > 9||n < 0){
return;
}
if (n == 0&&validSize >= 2){
maxProduct = Math.max(maxProduct, currentProduct);
return;
}
for (int j = i; j <= 9; j ++){
currentProduct *= j;
validSize ++;
backTracing(n - j, j);
currentProduct /= j;
validSize --;
}
}
}方法二:因式分解,分解因子为2和3,原理及程序后续补上。
相关文章推荐
- Leetcode 343 Integer Break
- 343. Integer Break
- leetcode 343 Integer Break C++
- 343. Integer Break
- 343. Integer Break
- LeetCode 第 343 题 (Integer Break)
- 343. Integer Break 【M】
- 343. Integer Break
- 343. Integer Break
- LeetCode 第 343 题 (Integer Break)
- 343. Integer Break
- 343. Integer Break
- leetcode 343: Integer Break(C#版)
- 343. Integer Break
- 343. Integer Break
- 343. Integer Break
- 343. Integer Break
- [LeetCode343]Integer Break
- LeetCode[343] Integer Break
- 343. Integer Break