首页 > 其他分享 >刷刷刷 Day 40 | 343. 整数拆分

刷刷刷 Day 40 | 343. 整数拆分

时间:2023-03-01 21:22:59浏览次数:58  
标签:10 乘积 int 40 拆分 343 Day dp

343. 整数拆分

LeetCode题目要求

给定一个正整数 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。
解题思路

依旧是动规五部曲
1、确定 dp[n] 表示数 n 拆分后的乘积
2、递推公式:dp[i] = max({dp[i], (i - j) * j, dp[i - j] * j});
3、dp的初始化:dp[0] dp[1] 没意义,只考虑 dp[2]=1
4、确定遍历顺序
5、举例推导dp数组

上代码

class Solution {
    public int integerBreak(int n) {
        /**
        10
        1 + 9  1*9 = 9
        2 + 8  2*8 = 16
        3 + 7  3*7 = 21
        4 + 6  4*6 = 24
        5 + 5  5*5 = 25


         */
        
        // 
        //dp[i] 为正整数 i 拆分后的结果的最大乘积
        int[] dp = new int[n+1];
        // 2 拆分为 1 + 1, 乘积为 1
        dp[2] = 1;
        // 从第三个数开始,拆分为 j+ 
        for(int i = 3; i <= n; i++) {
            for(int j = 1; j <= i-j; j++) {
                // 这里的 j 其实最大值为 i-j,再大只不过是重复而已,
                // 并且,在本题中,我们分析 dp[0], dp[1]都是无意义的,
                // j 最大到 i-j, 就不会用到 dp[0]与dp[1]
                dp[i] = Math.max(dp[i], Math.max(j*(i-j), j*dp[i-j]));
                // j * (i - j) 是单纯的把整数 i 拆分为两个数 也就是 i,i-j ,再相乘
                // 而 j * dp[i - j] 是将 i 拆分成两个以及两个以上的个数,再相乘。
            }
        }
        return dp[n];
    }
}

附:学习资料链接

标签:10,乘积,int,40,拆分,343,Day,dp
From: https://www.cnblogs.com/blacksonny/p/17169853.html

相关文章

  • day01(2023.3.1)
    1、了解了Java运行机制jdk和jre和jvm的区别 2、下载安装jdk然后配置环境变量 并验证是否成功(1)百度收搜Jdk8(推荐),找到下载地址。(2)同意协议,下载电脑对应的版本。......
  • 403. 青蛙过河 (Hard)
    问题描述403.青蛙过河(Hard)一只青蛙想要过河。假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。青蛙可以跳上石子,但是不可以......
  • 1405. 最长快乐字符串 (Medium)
    问题描述1405.最长快乐字符串(Medium)如果字符串中不含有任何'aaa','bbb'或'ccc'这样的字符串作为子串,那么该字符串就是一个「快乐字符串」。给你三个整数a,b,c......
  • 代码随想录算法训练营Day28 回溯算法 | 491.递增子序列 46.全排列 47.全排列 II
    代码随想录算法训练营491.递增子序列题目链接:491.递增子序列给定一个整型数组,你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入:[4,6,......
  • 代码随想录-day1
    链表今天主要是把链表专题刷完了,链表专题的题目不是很难,基本都是考察对链表的操作的理解。在处理链表问题的时候,我们通常会引入一个哨兵节点(dummy),dummy节点指向原链表的......
  • CFR-840-Div-2解题报告
    比赛传送门C.AnotherArrayProblem题意:给你一个数组\(a\),每次可以选两个位置\(i,j(i<j)\),将\([i,j]\)内的所有数替换为\(|a_i-a_j|\)。问最终数组的和最大为多少......
  • 韦东山2440-学习笔记-platform
    1.简介platform是设备驱动总线模型2.示例#include<linux/platform_device.h>#include<linux/module.h>staticstructplatform_device*led_dev;staticstru......
  • TPS7B8733QKVURQ1 40V低压稳压器,REF4132B25DBVR功能框图 汽车类应用
    TPS7B8733QKVURQ140V低压差稳压器说明:TPS7B87-Q140V低压差稳压器设计用于连接汽车应用中的电池。TPS7B87-Q1的输入电压范围可扩展至40V,因此该器件可承受汽车系统中预计可......
  • npm install 报错 -4048
    方法一:删除npmrc文件。强调:不是nodejs安装目录npm模块下的那个npmrc文件,而是在C:\Users\{账户}\下的.npmrc文件。方法二:以管理员身份运行cmd,执行命令npm......
  • 虚幻引擎5 学习 入门 3Day
    今日学习内容:材质材质属性:MaterialDomain:材质球域BaseColor基础颜色Metallic光滑度Reughness粗超度SelfLight设置自发光透明材质 将BlendModel(混合模......