LeetCode 343. Integer Break 题解(C++)
2016-10-17 20:30
330 查看
LeetCode 343. Integer Break 题解(C++)
题目描述
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).思路
只要把n尽量多的拆分成3即可。证明如下:若拆出的因子x大于4,则(x-2)*2>x,即因子x还可以拆分成x-2和2;
若拆出的因子x等于4,则x可以拆成2*2;
若拆出的因子等于1,则(n-1)*1
代码
class Solution { public: int integerBreak(int n) { if (n == 2) { return 1; } if (n == 3) { return 2; } int product = 1; while (n > 4) { product *= 3; n -= 3; } product *= n; return product; } };
相关文章推荐
- LeetCode 406. Queue Reconstruction by Height 题解(C++)
- LeetCode题解:Range Sum Query - Immutable(C++版)
- LeetCode 409. Longest Palindrome 题解(C++)
- leetcode Minimum Depth of Binary Tree C++题解
- LeetCode 319. Bulb Switcher 题解(C++)
- LeetCode 436. Find Right Interval 题解(C++)
- LeetCode 357. Count Numbers with Unique Digits 题解(C++)
- LeetCode 371. Sum of Two Integers 题解(C++)
- LeetCode 404. Sum of Left Leaves 题解(C++)
- LeetCode题解(C++版)
- LeetCode 415. Add Strings 题解(C++)
- LeetCode 12. Integer to Roman 题解(C++)
- House Robber[leetcode]题解 c++
- LeetCode 384. Shuffle an Array 题解(C++)
- LeetCode 122. Best Time to Buy and Sell Stock II 题解(C++)
- LeetCode 382. Linked List Random Node 题解(C++)
- LeetCode 100. Same Tree 题解(C++)
- LeetCode 144. Binary Tree Preorder Traversal 题解(C++)
- leetcode_效率题解_[python/C++]_21. Merge Two Sorted Lists(合并2个有序链表)
- LeetCode 389. Find the Difference 题解(C++)