LeetCode------整数拆分

Java版一:

package tencent;

/**
 * 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。
 * 
 * 示例 1:
 * 
 * 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1。 示例 2:
 * 
 * 输入: 10 输出: 36 解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 说明: 你可以假设 n 不小于 2 且不大于 58。
 * 
 * 
 * 
 * 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/integer-break
 * 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
 * 
 * @author BlueZ
 * 
 */
public class IntegerBreak {

	public int integerBreak(int n) {
		if (n == 2) {
			return 1;
		} else if (n == 3) {
			return 2;
		} else if (n % 3 == 0) {
			return (int) Math.pow(3, n / 3);
		} else if (n % 3 == 1) {
			return (int) (2 * 2 * Math.pow(3, (n - 4) / 3));
		} else {
			return (int) (2 * Math.pow(3, (n - 2) / 3));
		}
	}

	public static void main(String[] args) {
		System.out.println(new IntegerBreak().integerBreak(17));
	}
}

 

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