【力扣】343. 整数拆分 <动态规划、数学>
【力扣】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
题解
动态规划
-
确定 dp 数组以及下标的含义
dp[i]:分拆数字 i,可以得到的最大乘积为 dp[i]。 -
确定递推公式
有两种渠道得到 dp[i].
一个是j * (i - j)直接相乘。(2个)
一个是j * dp[i - j],相当于是拆分(i - j)(3个及3个以上)
递推公式:dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j)); -
dp 数组如何初始化
dp[0],dp[1] 就不应该初始化,也就是没有意义的数值。
dp[2] = 1 -
确定遍历顺序
dp[i] 是依靠 dp[i - j] 的状态,所以遍历 i 一定是从前向后遍历,先有 dp[i - j] 再有dp[i]
for (int i = 3; i <= n ; i++) {// 从1开始的。从0开始的话,那么让拆分一个数拆个0,求最大乘积就没有意义for (int j = 1; j < i - 1; j++) {dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));}
}
优化:
for (int i = 3; i <= n ; i++) {for (int j = 1; j <= i / 2; j++) {dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));}
}
- 举例推导 dp 数组(打印 dp 数组)
public static int integerBreak(int n) {//dp[i] 为正整数 i 拆分后的结果的最大乘积int[] dp = new int[n+1];dp[2] = 1;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];}
数学
public static int integerBreak2(int n) {if (n <= 3) {return n - 1;}int quotient = n / 3;int remainder = n % 3;if (remainder == 0) {return (int) Math.pow(3, quotient);} else if (remainder == 1) {return (int) Math.pow(3, quotient - 1) * 4;} else {return (int) Math.pow(3, quotient) * 2;}
}
相关文章:
【力扣】343. 整数拆分 <动态规划、数学>
【力扣】343. 整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。返回可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 10 输出:…...
数据结构--5.1图的存储结构(十字链表、邻接多重表、边集数组)
目录 一、十字链表(Orthogonal List) 二、邻接多重表 三、边集数组 四、深度优先遍历 一、十字链表(Orthogonal List) 重新定义顶点表结点结构: datafirstInfirstOut 重新定义边表结构结点: tailV…...
mac上 Kratos 配置 protoc
前言 protoc 是 protobuf 文件(.proto)的编译器,可以借助这个工具把 .proto 文件转译成各种编程语言对应的源码,包含数据类型定义、调用接口等。 protoc 在设计上把 protobuf 和不同的语言解耦了,底层用 c 来实现 protobuf 结构的存储&#x…...
【c++5道练习题】①
目录 一、有限制的累加 二、计算日期到天数转换 三、仅仅反转字母 四、 字符串的第一个唯一字符 五、字符串最后一个单词的长度 一、有限制的累加 题述: 求123...n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句…...
最佳实践:TiDB 业务读变慢分析处理
作者:李文杰 网易游戏计费 TiDB 负责人 在使用或运维管理 TiDB 的过程中,大家几乎都遇到过 SQL 变慢的问题,尤其是查询相关的读变慢问题。读变慢的问题大部分情况下都遵循一定的规律,通过经验的积累可以快速的定位和优化ÿ…...
【ES6】Getter和Setter
JavaScript中的getter和setter方法可以用于访问和修改对象的属性。这些方法可以通过使用对象字面量或Object.defineProperty()方法来定义。 以下是使用getter和setter方法的示例: <!DOCTYPE html> <script>const cart {_wheels: 4,get wheels(){retu…...
3DS Max中绘制圆锥箭头
3DS Max中绘制圆锥箭头 绘制结果绘制过程步骤一:绘制立体圆锥方法1方法2 步骤二:圆锥体调参(模型尺寸设置)1圆锥体参数说明2圆锥体参数调整 步骤三:绘制圆柱体步骤四:圆柱体调参步骤五:圆锥与圆…...
虚拟机Ubuntu20.04 网络连接器图标开机不显示怎么办
执行以下指令: sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service network-manager start...
你真的知道什么是USB Server吗?一分钟了解
很多公司都在用USB Server,效率大幅提高,但也还有不少人不知道USB Server到底是什么、干嘛用的。 USB Serve是帮助企业远程连接和集中管控USB设备的服务器 它的主要用途就是异地远程连接USB。 如,虚拟化环境的加密狗、前置机连接࿰…...
Node.js 中间件是怎样工作的?
express自带路由功能,可以侦听指定路径的请求,除此之外,express最大的优点就是【中间件】概念的灵活运用,使得各个模块得以解耦,像搭积木一样串起来就可以实现复杂的后端逻辑。除此之外,还可以利用别人写好…...
Spring MVC: 请求参数的获取
Spring MVC 前言通过 RequestParam 注解获取请求参数RequestParam用法 通过 ServletAPI 获取请求参数通过实体类对象获取请求参数附 前言 在 Spring MVC 介绍中,谈到前端控制器 DispatcherServlet 接收客户端请求,依据处理器映射 HandlerMapping 配置调…...
别再头疼反弹Shell失败了,这篇文章带你找到问题根源
别再头疼反弹Shell失败了,这篇文章带你找到问题根源 在渗透测试中,反弹shell失败的原因可以有多种。以下是一些常见的原因: **1.防火墙和网络过滤器:**目标系统可能配置了防火墙或网络过滤器,以限制对外部系统的连接…...
第五章 树与二叉树 四、线索树(手算与代码实现)
一、定义 1.线索树是一种二叉树,它在每个节点上增加了两个指针,分别指向其前驱和后继。 2.这些指针称为“线索”,因此线索树也叫做“线索化二叉树”。 3.在线索树中,所有的叶子节点都被线索化,使得遍历树的过程可以…...
服务器前后端学习理解
个人兴趣,突然想起来记录一下 1. 背景 想做一个最简单的网页,点击按钮后,访问服务器的redis数据库,读取一个为hello的值并显示 首先用js写了一个脚本,使用redis包,读取到了数据,并使用consol.l…...
python-数据分析-numpy、pandas、matplotlib的常用方法
一、numpy import numpy as np1.numpy 数组 和 list 的区别 输出方式不同 里面包含的元素类型 2.构造并访问二维数组 使用 索引/切片 访问ndarray元素 切片 左闭右开 np.array(list) 3.快捷构造高维数组 np.arange() np.random.randn() - - - 服从标准正态分布- - - …...
ChatGPT⼊门到精通(5):ChatGPT 和Claude区别
⼀、Claude介绍 Claude是Anthropic开发的⼀款⼈⼯智能助⼿。 官⽅⽹站: ⼆、Claude能做什么 它可以通过⾃然语⾔与您进⾏交互,理解您的问题并作出回复。Claude的主要功能包括: 1、问答功能 Claude可以解答⼴泛的常识问题与知识问题。⽆论是历史上的某个事件,理科…...
ChatGPT 总结数据分析的所有知识点
ChatGPT功能非常多,特别是对某个行业,某个方向,某个技术进行总结那是相当专业的。 如下图。 直接用一个指令便总结出来数据分析当中的所有知识点内容。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Ex…...
hadoop-HDFS
1.HDFS简介 2.1 Hadoop分布式文件系统-HDFS架构 2.2 HDFS组成角色及其功能 (1)Client:客户端 (2)NameNode (NN):元数据节点 管理文件系统的Namespace元数据 一个HDFS集群只有一个Active的NN ÿ…...
0202hdfs的shell操作-hadoop-大数据学习
文章目录 1 进程启停管理2 文件系统操作命令2.1 HDFS文件系统基本信息2.2 介绍2.3 创建文件夹2.4 查看指定文件夹下的内容2.5 上传文件到HDFS2.6 查看HDFS文件内容2.7 下载HDFS文件2.8 HDFS数据删除操作 3 HDFS客户端-jetbrians产品插件3.1 Big Data Tools 安装3.2 配置windows…...
生活小记-挂号信
"挂号信"通常指的是在邮寄过程中通过挂号邮寄服务寄送的信件,相对于普通信件有一些特殊的特点和服务。以下是挂号信与其他信件(例如普通信件)之间的区别: 跟踪和确认: 挂号信:通过挂号邮寄服务寄…...
从“会响”到“可靠”:给这个经典12V降5V电路加个二极管和电容,稳定性提升不止一点点
从“会响”到“可靠”:经典12V降5V电路的稳定性优化实战 当你在面包板上搭建好那个经典的稳压管NPN降压电路,看着万用表显示稳定的5V输出时,或许会感到一丝成就感。但当你接上负载,发现电压开始波动,或者在电源反接时闻…...
西南交通大学【数电实验之Modelsim仿真全流程实战】
1. 从零开始搭建Modelsim仿真环境 第一次接触数字电路仿真的同学可能会觉得Modelsim界面复杂,其实只要跟着步骤一步步操作,半小时就能跑通第一个仿真案例。我当年在西南交大做数电实验时,也经历过从一脸懵到熟练操作的过程,这里把…...
【Web安全】JWT常见安全漏洞总结
文章目录前言1. JWT基础与漏洞概述2. JWT核心漏洞解析2.1 未校验签名2.1.1 漏洞原理2.1.2 利用方式2.1.3 实战脚本2.2 算法篡改漏洞2.2.1 漏洞原理2.2.2 核心说明2.2.3 攻击流程2.3 弱密钥漏洞2.3.1 漏洞原理2.3.2 利用方式2.4 垂直越权2.4.1 漏洞原理2.4.2 利用流程2.5 KID字段…...
ARM9老开发板救星:用BusyBox 1.7.0和4.3.2工具链构建根文件系统(避坑实录)
ARM9开发板重生指南:BusyBox 1.7.0与4.3.2工具链的黄金组合 当一块尘封多年的ARM9开发板重新出现在你面前,那种感觉就像考古学家发现了一件珍贵的文物。S3C2440这类老将虽然性能比不上现代Cortex-A系列,但在教学、工业控制等领域依然有不可替…...
从“寄生二极管”入手:用万用表二极管档快速判别NMOS/PMOS管脚与好坏
从“寄生二极管”入手:用万用表二极管档快速判别NMOS/PMOS管脚与好坏 当你面对一个没有任何标识的MOS管,或者怀疑电路板上的MOS管损坏时,如何快速准确地判断它是NMOS还是PMOS,并识别出D、S、G三个引脚?本文将详细介绍一…...
终极SOCD解决方案:3分钟让你的游戏操作职业化
终极SOCD解决方案:3分钟让你的游戏操作职业化 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否在玩《街头霸王》时连招总是失败?在《Apex英雄》中急停转向时角色卡顿?《…...
为什么92.7%的临床研究者用错Perplexity药物检索?——2024年真实审计案例暴露的4个致命盲区
更多请点击: https://intelliparadigm.com 第一章:Perplexity药物信息检索的临床价值与审计背景 在精准医疗快速演进的当下,临床决策对实时、可信、上下文感知的药物信息依赖日益加深。Perplexity作为基于推理增强型大语言模型的信息检索系统…...
终极QR二维码修复工具:QRazyBox完整指南与高效恢复技巧
终极QR二维码修复工具:QRazyBox完整指南与高效恢复技巧 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 还在为损坏的二维码无法扫描而烦恼吗?QRazyBox是一款专业的免费…...
Beyond Compare 5密钥生成器终极指南:3种简单方法获取永久授权
Beyond Compare 5密钥生成器终极指南:3种简单方法获取永久授权 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 还在为Beyond Compare 5的30天试用期到期而烦恼吗?想要免费…...
避开CASA模型NPP估算的那些坑:我的IDL代码调试与参数优化心得
避开CASA模型NPP估算的那些坑:我的IDL代码调试与参数优化心得 第一次用CASA模型估算NPP时,我对着屏幕上的异常结果发呆了半小时——明明按照教程一步步操作,为什么输出的NPP值会出现大面积负值?后来才发现,温度胁迫因子…...
