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。

这道题我没有思路,看了官方解题思路之后,梳理如下:

用一个数组dp[i]表示i能被拆分出的乘积最大的整数,

一个数n,可以被拆为j和n-j, n-j可以选择不拆开和拆开

n=Math.max(j*(n-j),j*dp[n-j]);

j的范围在1~n-1

java 复制代码
class Solution {
    public int integerBreak(int n) {

        if(n<2){
            return 0;
        }
        int dp[]=new int[n+1];
        dp[0]=0;
        dp[1]=0;

       for(int i=2;i<n+1;i++){
           for(int j=1;j<i;j++){
               dp[i]=Math.max(dp[i],Math.max((i-j)*j,j*dp[i-j]));
           }
       }
       return dp[n];

    }
}
相关推荐
凌波粒10 分钟前
MyBatis完整教程IDEA版(2)--ResultMap/注解/一对多/多对一/lombok/log4j
java·intellij-idea·mybatis
蓝-萧16 分钟前
【玩转全栈】----Django基本配置和介绍
java·后端
priority_key17 分钟前
排序算法:堆排序、快速排序、归并排序
java·后端·算法·排序算法·归并排序·堆排序·快速排序
不染尘.1 小时前
2025_11_7_刷题
开发语言·c++·vscode·算法
汤姆yu2 小时前
基于SpringBoot的动漫周边商场系统的设计与开发
java·spring boot·后端
皮皮林5512 小时前
快速解决 Maven 版本冲突指南 !
java·maven
灰小猿2 小时前
Spring前后端分离项目时间格式转换问题全局配置解决
java·前端·后端·spring·spring cloud
来荔枝一大筐2 小时前
力扣 寻找两个正序数组的中位数
算法
算法与编程之美2 小时前
理解Java finalize函数
java·开发语言·jvm·算法
怕什么真理无穷2 小时前
C++面试4-线程同步
java·c++·面试