343. Integer Break
2016-07-24 05:05
253 查看
343. Integer Break
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.
Hint:
There is a simple O(n) solution to this problem.
You may check the breaking results of n ranging from 7 to 10 to discover the regularities.
Hide Tags
Dynamic Programming Math
public class Solution { public int integerBreak(int n) { //2 = 1+1 //3 = 1+2 //4 = 2+2 //5 = 2+3 //6 = 3+3 //3*3>2*2*2 //Use two threes instead of three twos. if(n==2) return 1; if(n==3) return 2; if(n==4) return 4; if(n==5) return 6; if(n==6) return 9; //7 = 2+2+3 //8 = 2+3+3 //9 = 3+3+3 //10 = 3+3+4 //Try to use 3 as many as possible. return 3*integerBreak(n-3); } }
相关文章推荐
- Android多线程操作——线程池管理综述
- Palindrome Permutation
- Min Stack
- Burst Balloons
- Intersection of Two Arrays II
- Intersection of Two Arrays II
- Flex布局
- 【慕课学习】《JavaScript深入浅出》——语句
- Reverse Vowels of a String
- 用vbs 将有序文件转换为有序文件
- HTML5网页新风格总结(与html4对比)
- 一个小玩意引起的反思
- 基于内容的推荐(第二周)
- jquery中each的三种遍历方法
- 开始使用Gulp
- Meeting Rooms
- Meeting Rooms
- 网站性能测试工具ab学习
- 打印一个N*N的方阵,N为每边字符的个数,要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,...
- TensorFlow安装教程与Android Camera Demo示例(Ubuntu Trusty 14.04 LTS)