[leetcode]343.C++实现 整数拆分(Integer Break)

(一)题目描述

[leetcode]343.C++实现 整数拆分(Integer Break)_第1张图片

[leetcode]343.C++实现 整数拆分(Integer Break)_第2张图片

(二)思想方法

将数字拆分成2和3的乘积,因为 2*3 > 1*5; 3*3 > 1*6; 3*2*2 > 1*7; 2*2*2*2 > 1*8 .......所以拆分成2和3后,就能得到最大的乘积。

(三)代码实现

class Solution {
public:
    int integerBreak(int n) {
        if (n == 2) return 1;
        if (n == 3) return 2;
        if (n % 3 == 0) 
            return (int)pow(3, n / 3);
        if (n % 3 == 1) return (int)pow(3, (n - 4) / 3) * 4; // 有多少的3和4可以根据上面的穷举找到
        return (int)pow(3, (n - 2) / 3) * 2;
    }
};

 

你可能感兴趣的:(算法,leetcode)