赞
踩
拆分整数给定一个正整数n
,将其拆分为k
个 正整数 的和(k >= 2
),并使这些整数的乘积最大化。返回 你可以获得的最大乘积 。
示例 1:
输入: n = 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:
输入: n = 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。
提示:
2 <= n <= 58
class Solution { public int integerBreak(int n) { int arr[] = new int[n + 1]; arr[0] = 0; arr[1] = 0; if (n < 3) return 1; arr[2] = 1; for (int i = 3; i <= n; i++) { for (int j = 1; j <= i / 2; j++) { int max = arr[i]; if (max < j * (i - j)) max = j * (i - j); if (max < j * arr[i - j]) max = j * arr[i - j]; arr[i] = max; } } return arr[n]; } }
//给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。 //返回 你可以获得的最大乘积 。 class Solution { public int integerBreak(int n) { int arr[] = new int[n + 1]; if (n == 2 ) return 1; arr[2] = 1; for (int i = 3; i <= n; i++) { int max = 0;//当前i要取到最大值 for (int j = 1; j <= i / 2; j++) { max=Math.max(max,Math.max(j * (i - j),j * arr[i - j])); } arr[i]=max; } return arr[n]; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。