力扣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];
    }

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

相关推荐
_Narcissus_几秒前
动态规划初探(含完整代码实现)
c语言·数据结构·c++·算法·动态规划·背包问题·最短路径
聚美智数7 分钟前
图片水印-图片剪裁-图片缩放API接口介绍
java·服务器·数据库
世人万千丶33 分钟前
鸿蒙项目实战 - 社区活动编排板:标签云布局算法与自动换行
学习·算法·华为·harmonyos·鸿蒙
zander25836 分钟前
LeetCode 279. 完全平方数
算法·深度优先
xierui1231231 小时前
AI Agent 隐私架构:本地化重点为什么是登录态与执行权限
java·人工智能·网络安全·架构
cfm_29141 小时前
Spring AI Tool 调用架构全解
java·人工智能·spring
sun༒1 小时前
Spring @Scheduled 定时任务详解:Cron表达式、执行顺序、优先级与并行调度
java·后端·spring
一次旅行1 小时前
DeepSeek‑V4‑Flash‑Vision‑Exp 小白入门实战|3种传图方式、完整可跑代码、避坑排障
java·前端·人工智能
典典分享指南1 小时前
VS Code Git 工作树:解锁多分支并行开发新体验
算法·决策树·逻辑回归·启发式算法
野生技术架构师2 小时前
Spring Boot 实现数据脱敏:自定义注解 + Jackson 序列化器
java·spring boot·后端