当前位置:   article > 正文

拆分整数 java

拆分整数 java
拆分整数
 给定一个正整数 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
    1. class Solution {
    2.     public int integerBreak(int n) {
    3.         int arr[] = new int[n + 1];
    4.         arr[0] = 0;
    5.         arr[1] = 0;
    6.         if (n < 3)
    7.             return 1;
    8.         arr[2] = 1;
    9.         for (int i = 3; i <= n; i++) {
    10.             for (int j = 1; j <= i / 2; j++) {
    11.                 int max = arr[i];
    12.                 if (max < j * (i - j))
    13.                     max = j * (i - j);
    14.                 if (max < j * arr[i - j])
    15.                     max = j * arr[i - j];
    16.                 arr[i] = max;
    17.             }
    18.         }
    19.         return arr[n];
    20.     }
    21. }
     
    1. //给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。
    2. //返回 你可以获得的最大乘积 。
    3. class Solution {
    4. public int integerBreak(int n) {
    5. int arr[] = new int[n + 1];
    6. if (n == 2 )
    7. return 1;
    8. arr[2] = 1;
    9. for (int i = 3; i <= n; i++) {
    10. int max = 0;//当前i要取到最大值
    11. for (int j = 1; j <= i / 2; j++) {
    12. max=Math.max(max,Math.max(j * (i - j),j * arr[i - j]));
    13. }
    14. arr[i]=max;
    15. }
    16. return arr[n];
    17. }
    18. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/860544
推荐阅读
相关标签
  

闽ICP备14008679号