力扣343 整数拆分 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

对于的正整数 n,当 n≥2 时,可以拆分成至少两个正整数的和。令 k 是拆分出的第一个正整数,则剩下的部分是 n−k,n−k 可以不继续拆分,或者继续拆分成至少两个正整数的和(一个问题可以分解为相似的子问题因此想到动态规划)。由于每个正整数对应的最大乘积取决于比它小的正整数对应的最大乘积,因此可以使用动态规划求解。

java 复制代码
    public static void main(String[] args) { // 测试用
        System.out.println(integerBreak(10));
    }

    public static int integerBreak(int n) {
        if (n == 2){
            return 1;
        }
        int[] res = new int[n + 1];
        res[0] = 0;
        res[1] = 1;
        res[2] = 2;
        for (int i = 3; i < res.length; i++) {
            for (int j = 0; j < i; j++) {
                res[i] = Math.max(res[i], Math.max((i - j) * j, res[i - j] * j));
            }
        }
        System.out.println(Arrays.toString(res)); // 输出各个数的最大值
        return res[n];
    }

以上为记录分享用,代码较差请见谅

相关推荐
龚礼鹏1 分钟前
图像显示框架十一——BufferQueue的工作流程(基于Android 15源码分析)
java·网络·数据库
爬山算法2 分钟前
Hibernate(72)如何在NoSQL数据库中使用Hibernate?
java·nosql·hibernate
毕设源码-赖学姐3 分钟前
【开题答辩全过程】以 基于spring boot的国学诗词网站设计与实现--为例,包含答辩的问题和答案
java·spring boot·后端
MicroTech20259 分钟前
自适生长的点云智能:MLGO微算法科技基于双阈值与DDM的仿生式配准算法
科技·算法
还是奇怪12 分钟前
Python第四课:循环与数据结构深度解析
数据结构·windows·python·青少年编程·循环
yunsr17 分钟前
python作业1
开发语言·python·算法
Hellc00718 分钟前
Jenkins 上下游 Job + Docker 镜像部署完整实战(避坑版)
java·docker·jenkins
_周游22 分钟前
Java8 API 文档搜索引擎_1. 项目简介与模块划分
java·搜索引擎·servlet·maven·intellij-idea
清铎26 分钟前
项目_华为杯’数模研赛复盘_第二问
深度学习·算法·机器学习
v_for_van31 分钟前
力扣刷题记录1(无算法背景,纯C语言)
算法·leetcode·职场和发展