【LeetCode】343. 整数拆分(中等)——代码随想录算法训练营Day40

题目链接:343. 整数拆分

题目描述

给定一个正整数 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

文章讲解:代码随想录

视频讲解:动态规划,本题关键在于理解递推公式!| LeetCode:343. 整数拆分_哔哩哔哩_bilibili

题解1:动态规划

思路:n 可以拆分成 j 和 n - j,n - j 又可以继续往下拆分,即 n 的状态依赖于 j 的状态 和 n - j 的状态,可以使用动态规划法。

动态规划分析:

  • dp 数组以及下标的含义:dp[i] 表示 i 拆分后的最大乘积。
  • 递推公式:dp[i] = Math.max(dp[i], j * (i - j), j * dp[i - j]),j 为 1 到 (i - j) / 2。
  • dp 数组初始化:全部初始化为1。
  • 遍历顺序:从前到后。
  • 打印 dp 数组:以输入 n = 10 为例,dp 数组为 [ <1 empty item>, 1, 1, 2, 4, 6, 9, 12, 18, 27, 36 ]。
/*** @param {number} n* @return {number}*/
var integerBreak = function(n) {const dp = new Array(n + 1).fill(1);for (let i = 2; i <= n; i++) {for (let j = 1; j <= i / 2; j++) {dp[i] = Math.max(dp[i], j * (i - j), j * dp[i - j]);}}return dp[n];
};

分析:时间复杂度为 O(n²),空间复杂度为 O(n)。

收获

使用动态规划法要按照五部曲来,本题的难点在于递推公式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始手写mmo游戏从框架到爆炸(二十一)— 战斗系统二

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 上一章&#xff08;从零开始手写mmo游戏从框架到爆炸&#xff08;二十&#xff09;— 战斗系统一-CSDN博客&#xff09;我们只是完成了基本的战斗&#xff0c;速度属性并没有…

R语言数据分析(三)

R语言数据分析&#xff08;三&#xff09; 文章目录 R语言数据分析&#xff08;三&#xff09;一、可视化步骤1.1 创建ggplot1.2 添加美学和图层1.3 简化代码 二、可视化分布2.1 分类变量2.2 数值变量 三、可视化关系3.1 数值变量和分类变量3.2 两个分类变量3.3 两个数值变量3.…

C++的STL都由什么组成

C标准模板库&#xff08;STL&#xff09;是C语言的一部分&#xff0c;提供了一系列模板类和函数&#xff0c;旨在帮助程序员处理常见的编程任务&#xff0c;如数据结构和算法操作。 STL主要包括四大组件&#xff1a; 容器&#xff08;Containers&#xff09;、 迭代器&#xff…

虚拟机器centos7无法识别yum 命令异常处理笔记

问题现象 启动虚拟机后执行ipconfig 提示未找到该命令,然后执行yum install -y net-tools提示 curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"的错误 [roothaqdoop~]# ifconfig -bash: ifconfig: 未找到命令 [roothadoop~]# yum install …

以Scala官方提供的方法解读TraversableOnce

代码提供 让我们先来看Scala中提供的一段代码 static List toList$(final TraversableOnce $this) { return $this.toList(); } default List toList() {return (List)this.to(scala.collection.immutable.List..MODULE$.canBuildFrom()); } 上述代码片段是Scala中的两个方…

Android自编译Pixel3内核加入KernelSU

背景 让Pixel3 AOSP Android10 4.9内核用上Kernel SU 环境: Ubuntu 18.04 vm aosp10r2 移植参考官方,和github项目 Commits OnlyTomInSecond/android_kernel_xiaomi_sdm845 (github.com) 这个项目是 LineageOS/android_kernel_xiaomi_sdm845 编译的前提 已经有完整…

超级抽象的前端2

vue3的调用方法失败的原因 function validateConfirm(rule, value, callback) {if (value ! form.password) {callback(new Error(两次输入的密码不一致))} else {callback()}function showAgreement() {dialogVisible.value true}function submitForm() {// 这里是提交表单的…

逆推求期望DP

我的开始的想法&#xff1a;状态设置 dp[i][j] 为玩了 i 个职业 j 个阵营的期望天数&#xff0c;初始值很好解决 dp[1][1]1 &#xff0c;但是有个问题&#xff0c;每对 (i,j) 除了边界那里&#xff0c;会由三个地方来决定这一个(i-1,j-1)(i,j-1)(i-1,j)&#xff0c;所以&#x…

LayUI发送Ajax请求

页面初始化操作 var processData null $(function () {initView();initTable();// test(); })function initView() {layui.use([laydate, form], function () {var laydate layui.laydate;laydate.render({elem: #applyDateTimeRange,type: datetime,range: true});}); }初始…

【spring】 ApplicationListener的使用及原理简析

文章目录 使用示例&#xff1a;原理简析&#xff1a; 前言&#xff1a;ApplicationListener 是spring提供的一个监听器&#xff0c;它可以实现一个简单的发布-订阅功能&#xff0c;用有点外行但最简单通俗的话来解释&#xff1a;监听到主业务在执行到了某个节点之后&#xff0c…

Elasticsearch中可避免的坑

版本定位&#xff1a;7.x 总结的坑&#xff1a; term及terms词条查询时&#xff0c;如果有text及keyword类型&#xff0c;则需加.keywordqueryString全字段搜索时&#xff0c;最好指定字段&#xff1b;并要提前设置好字段mapping&#xff1a;keyword并指定分词器。reindex做数…

【ACM出版】第五届计算机信息和大数据应用国际学术会议(CIBDA 2024)

第五届计算机信息和大数据应用国际学术会议&#xff08;CIBDA 2024&#xff09; 2024 5th International Conference on Computer Information and Big Data Applications 重要信息 大会官网&#xff1a;www.ic-cibda.org 大会时间&#xff1a;2024年3月22-24日 大会地点&#…

Atcoder ABC341 A-D题解

比赛链接:ABC341 Problem A: 先签个到。 #include <bits/stdc.h> using namespace std; int main() {int n;cin>>n;for(int i0;i<n;i)cout<<"10"<<endl;cout<<"1"<<endl;return 0; } Problem B: 继续签。 #i…

week04day03(爬虫 beautifulsoup4、)

一. 使用bs4解析网页 下载bs4 - pip install beautifulsoup4 使用的时候 import bs4专门用于解析网页的第三方库 在使用bs4的时候往往会依赖另一个库lxml pip install lxml 网页代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><…

【Python笔记-设计模式】对象池模式

一、说明 用于管理对象的生命周期&#xff0c;重用已经创建的对象&#xff0c;从而减少资源消耗和创建对象的开销 (一) 解决问题 主要解决频繁创建和销毁对象所带来的性能开销问题。如数据库连接、线程管理、网络连接等&#xff0c;对象的创建和销毁成本相对较高&#xff0c…

冬眠...

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 阿宁生活在一个 nnn 行 mmm 列的字符矩阵中&#xff0c;阿宁打算在第 xxx 行 yyy 列冬眠。 在每一天&#xff0c;都会有 qqq 次行循环移动或列循环移动。 如果是第 zzz 行循环移动&#xff0c;…

IC卡批量加密软件使用

IC卡出厂是默认的密码FFFFFFFFFFFF空白卡&#xff0c;IC卡在门禁、电梯、食堂消费、洗浴一卡通等系统上使用前是需要初始化的&#xff0c;即加密的同时写入基础数据。 为什么要用批量加密软件呢&#xff0c;以为需要加密的卡有几百张&#xff0c;几千张&#xff0c;数量比较多&…

shiro 整合 springmvc 实战及源码详解

序言 前面我们学习了如下内容&#xff1a; 5 分钟入门 shiro 安全框架实战笔记 shiro 整合 spring 实战及源码详解 相信大家对于 shiro 已经有了最基本的认识&#xff0c;这一节我们一起来学习写如何将 shiro 与 springmvc 进行整合。 spring mvc 整合源码 maven 依赖 版…

水务界的“数字蝶变”:水务公司重构自我,开启智慧供水新时代

历经六十余载的稳健前行&#xff0c;某水务公司已发展成为国有一档企业中的供水行业佼佼者&#xff0c;不仅主营业务突出&#xff0c;更拥有完善的产业链条。然而&#xff0c;面对供水业务24小时连续作业的高要求&#xff0c;以及业务管理需求的日益复杂化&#xff0c;公司意识…

Qt中添加Mysql驱动

qt连接mysql报错&#xff1a;QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7 - №点缀 - 博客园 (cnblogs.com)