LeetCode343. Integer Break
来源:互联网 发布:新加坡网络运营商 编辑:程序博客网 时间:2024/05/07 03:11
343. Integer Break
My Submissions QuestionEditorial Solution
Total Accepted: 4641 Total Submissions: 11382 Difficulty: Medium
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:
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.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
分析:我们知道...某数的n次方结果总是比乘法大...
如果可以拆成3...那就不要选择2...包括4(是2的平方)
如果可以拆成5...依旧小于3x2=6
如果可以拆成6...依旧小于3x3=9
如果可以拆成7...依旧小于3x2x2=9
如果可以拆成8...依旧小于3x3x2=18
如果可以拆成9...依旧小于3*3*3=27
所以说拆成大数还不如变成3的次方形式。。
4 = 2 + 2
5 = 2 + 3
6 = 3 + 3
7 = 3 + 3 + 1 = 3 + 4
8 = 3 + 3 + 2
9 = 3 + 3 + 3
10 = 3 + 3 + 3 + 1 = 3 + 3 + 4
11 = 3 + 3 + 3 + 2
12 = 3 + 3 + 3 + 3
我的意思是...
如果有3 + 1 出现,那它是小于2的2次方的...
所以如果余数是1,就把3x1改成x4...
如果有3 + 2出现,那就没法拆成次方形式...
所以如果余数是2,依然是3x2...
如果有3 + 3出现,那一定大于 2的3次方...
所以如果余数是0,那就是3x3...
就是说...
尽可能拆成3的n次方形式...如果余数是1那就把3*1变成2*2...
找到规律后,代码就很简单,如下:
class Solution {public: int integerBreak(int n) { if(n <= 3) return n - 1; int cnt = 1; while(n > 2) { cnt = cnt * 3; n = n - 3; } if(n == 0) return cnt; else if(n == 1) return cnt / 3 * 4; else return cnt * 2; }};
- leetcode343 Integer Break java
- LeetCode343. Integer Break
- [LeetCode343]Integer Break
- LeetCode343 Integer Break
- leetcode322 coin change & leetcode343 integer break
- leetcode343-Integer Break(整数拆分求最大乘积)
- LeetCode343
- Integer Break
- Integer Break
- Integer Break
- Integer Break
- Integer Break
- Integer Break
- Integer Break
- Integer Break
- Integer Break
- Integer Break
- Integer Break
- LeetCode 125. Valid Palindrome
- LeetCode 6. ZigZag Conversion
- java在线预览txt、word、ppt、execel,pdf代码(未测试)
- LeetCode 303. Range Sum Query – Immutable
- Java通用的Excel文件生成工具类,支持生成文件和浏览器直接下载(未测试)
- LeetCode343. Integer Break
- java zip 工具类(未测试)
- Java实现简单的截图工具(未测试)
- LeetCode345. Reverse Vowels of a String
- LeetCode344. Reverse String
- 利用Gson实现Json串和Java Bean互转(未测试)
- 在 mac 系统下播放.csf 视频的方法
- 常用正则表达式列表
- LeetCode 28. Implement strStr()