#leetcode编程日记#343. Integer Break
来源:互联网 发布:网络双向是什么意思 编辑:程序博客网 时间:2024/06/05 20:54
题目描述
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).
注意事项
You may assume that n is not less than 2 and not larger than 58.
解题思路
个人觉得是规律题。首先是自己手算下6至10的情况。
6=3+3 -> 3*3=9 [6 mod 3 = 0] 第①种情况
7=2+2+3 -> 2*2*3=12 [7 mod 3 = 1]第②种情况
8=2+3+3 -> 2*3*3=18 [8 mod 3 = 2]第③种情况
9=3+3+3 -> 3*3*3=27 [9 mod 3 = 0] 第①种情况
10=2+2+3+3 -> 2*3*3=18 [10 mod 3 = 1] 第②种情况
从上面可以推出,只要把n分解成尽量多的3就符合要求了。读者可以自己从10后开始算,n总是能分解成n=2*m+3*k的模式,我们尽量让k更大。这里给不出什么数学定理……大牛可以试试自己整个定理来证明下。
下面就可以根据n mod 3 的值进行分类了:
①n mod 3 = 0:这种情况最简单,直接得出3^(n/3)的结果。
②n mod 3 = 1:留下一个1比较亏,可以从分解出来的(n/3)个3中取出一个3,和余下的1重新组合成两个2,2*2>1*3嘛
②n mod 3 = 2:把分解好的(n/3)个3乘积起来,再乘以多余的2就可以了。
注意:n=2,3都是例外,单独返回结果就行
代码
class Solution {public: int integerBreak(int n) { if(n==2)return 1; if(n==3)return 2; int div=n/3; int mod=n%3; switch(mod){ case 0: return pow(3,div); break; case 1: return pow(3,div-1)*4; break; case 2: return pow(3,div)*2; break; } }};
- #leetcode编程日记#343. Integer Break
- Leetcode 343. Integer Break
- [LeetCode] 343. Integer Break
- leetcode 343. Integer Break
- LeetCode-343. Integer Break
- LeetCode 343. Integer Break
- leetcode 343. Integer Break
- Leetcode:343. Integer Break
- LeetCode 343. Integer Break
- leetcode-343. Integer Break
- LeetCode: 343. Integer Break
- LeetCode.343. Integer Break
- leetcode 343. Integer Break
- Leetcode 343. Integer Break
- LeetCode 343. Integer Break
- leetcode 343. Integer Break
- 【leetcode】343. Integer Break
- leetcode 343. Integer Break
- 自定义队列Queue
- HDU 3652 浅谈数位动态规划朝花夕拾Ver2.0
- Python中Unicode字符串
- PX4代码学习系列博客(6)——offboard模式位置控制代码分析
- tensorflow variable_scope,tf.name_scope, tf.variable, tf.get_varible
- #leetcode编程日记#343. Integer Break
- java 图片文件生成MD5值
- 在centos中视频转音频的命令
- epoll的ET和LT模式下,accept,recv,send写法
- 以半桥驱动芯片FAN73933为例说明自举原理
- 使用Python Selenium PhantomJS的XPath时应注意校验结果
- 关于Android调用支付宝接口”有的手机无法调起网页支付”遇到的问题
- size_t的使用实例 @C++
- android:windowSoftInputMode属性详解