LeetCode343-整数拆分

2023-10-27

昨天晚上写作业时

腾讯的一条笔试通知邮件

着实让我有点吃惊

我三月份就投了鹅厂

身边的朋友早就面试了

自己的简历杳无音讯

本早就放弃了

却没想还能最后有次机会

害,要好好珍惜了。


题目描述:

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。

示例 1:

输入: 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。

示例 2:

输入: 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。

思路解析:

这中类型的题目拿过来看都不看直接就是动态规划解决了,因为题目给的是拆分为至少两个正整数的和,也就是可能是2个,是3个,是4个等。没有告诉你拆分成几个,你直接硬着头皮做实完全没有思路的。我们只能是分别记录0-n之间每个值对应的乘积最大值,然后找到动态回归方程,利用之前的规律值快速求解。下面举几个例子示范。此时我们定义标记矩阵为dp[i](i=0,1,2...),其中i对应给定的输入数字n

输入: 3
输出: 2
解释: 2 = max(dp[1]*dp[2], 1*dp[2], dp[1]*2, 1*2, dp[3])

因为dp[2]=1,dp[1]=1(dp[1]正常逻辑来讲没有意义,这儿为了规范还是加上了),最后统计所有值,发现1*2能得到最大值,所以dp[3]=2

输入: 4
输出: 4
解释: 4 = max(dp[1]*dp[3], dp[2]*dp[2], 1*dp[3], dp[1]*3, 1*3, 2*dp[2], dp[2]*2, 2*2, dp[4])

最后发现是2*2=4得到最大值。

由这两个例子,我们总结出的动态转移方程为:

maxnum=max(dp[i]*dp[n-i], i*dp[n-i], dp[i]*(n-i), i*(n-i))

其中i=1,2,...n-1.

代码如下

class Solution(object):
    def integerBreak(self, n):
        """
        :type n: int
        :rtype: int
        """
        dp = [1] * (n+1)
        for i in range(2, n+1):
            max_num = dp[i]
            for j in range(1,int(i/2)+1):
                max_num = max(max_num, dp[j]*dp[i-j], j*dp[i-j], dp[j]*(i-j), j*(i-j))
            dp[i] = max_num
        return dp[-1]


if __name__ == "__main__":
    n = 10
    print(Solution().integerBreak(n))

执行效率中等吧,在50%左右。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode343-整数拆分 的相关文章

随机推荐

  • Window10下解决弹出兼容性助手对话框的方法

    注 Win7或其他版本可以参考这个 Win10下亲测可用 Window10下安装运行一些旧版的软件后 经常在运行或退出时弹出程序兼容性助手对话框 解决方法如下 1 关闭Windows服务下的程序兼容性服务 设置为禁用 2 在策略中设置 关闭
  • 1+X 云计算运维与开发(中级)案例实战——ZooKeeper集群部署

    传送门 教育部 职业教育将启动 1 X 证书制度改革 职业教育改革1 X证书制度试点启动 1 X成绩 证书查询入口 文章目录 什么是zookeeper 1 案例目标 2 案例分析 2 1 规划节点 2 2 基础准备 3 案例实施 3 1 基
  • 利用IDEA 进行debug发现错误的一次经历

    利用IDEA debug发现错误的一次经历 今天在做实训项目的时候遇到了一个问题 就是在进行添加学生信息的时 发现总是提示手机号码格式不正确 可是明明是以正确的格式输入的却总是提示格式错误 于是在这里打上断点并且按右上角的虫子按钮 同样输入
  • vue项目怎么安装依赖

    安装node js 从node js官网下载并安装node 安装过程很简单 一路 下一步 就可以了 傻瓜式安装 安装完成之后 打开命令行工具 输入 node v 如下图 如果出现相应的版本号 则说明安装成功 npm包管理器 是集成在node
  • 不想学习的时候如何逼迫自己去学习?(长文预警)

    尼采曾用酒神和日神来比喻人类艺术活动的两种方式 一种是日神的 走向世界 追求成功 类的理性 一种是酒神的 走向内心 寻求超越 类的情感 而从学习上来看 由于中国特殊的教育环境 几乎不可能有后者的闲情逸致 家长们送孩子们上学 除了超一线城市确
  • Hive概论、架构和基本操作

    Hive是一个构建在Hadoop上的数据仓库框架 最初 Hive是由Facebook开发 后台移交由Apache软件基金会开发 并做为一个Apache开源项目 Hive是基于Hadoop的一个数据仓库工具 可以将结构化的数据文件映射为一张数
  • vue简单实现查询排序功能

  • Jenkins与SonarQube配置

    Jenkins与SonarQube Jenkins 配置 SonarQube 在 SonarQube 中生成 Server authentication token 登录 SonarQube 后 在 My Account gt Securi
  • 2020年蓝桥杯B组个人题解(热的,不知道对错)

    文章目录 A B C D E F G H I J 总结 结果 现在是蓝桥杯刚结束 趁着有记忆 写下这篇博客 不知道对错 如果我错了 请指出 A 因为是到0就结束了 那么每次看看 600是否结束 如果没有结束就 300 然后时间 2 60 最
  • 抗渗等级p6是什么意思_混凝土抗渗等级w4是什么意思?

    混凝土抗渗等级可按28d龄期的标准试件测定 混凝土抗渗等级分为 W2 W4 W6 W8 W10 W12六级 根据建筑物开始承受水压力的时间 也可利用60d或90d龄期的试件测定抗渗等级 抗渗等级是以28d龄期的标准试件 按标准试验方法进行试
  • jeeplus-js-获取table中复选框选中的列

    function getSelectedIds var str var ids contentTable tbody tr td input i checks checkbox each function if true this is c
  • 解决error C2065:"..."未声明的标识符,C2065:语法错误: 标识符“...”

    网狐项目工程中有时候会出现 C2065错误 一般情况下有可能是 项目工程配置出错 只需要选择 Visual Studio 2013 v120 就可以了
  • 算法笔记(5)-K最近邻算法及python代码实现

    K最近邻算法既可以用于分类又可以用于回归 K最近邻 k Nearest Neighbor KNN 算法分类的基本原理 如果一个样本在特征空间中的k个最相似 即特征空间中最邻近 的样本中的大多数属于某一个类别 则该样本也属于这个类别 K最近邻
  • 分析解决【No module named ‘triton‘】的问题

    文章目录 一 现象 二 分析 三 安装 3 1 项目虚拟环境 3 2 环境版本问题 三 与主题无关 一 现象 在Windows11下训练Stable Diffusion的LoRA模型的时候 总是重复提示 A matching Triton
  • nginx 配置文件关键字

    L1 location root html index index html index htm L1可以匹配到请求127 0 0 1 127 0 0 1 root html 是一个相对路径 表示以ng安装路径下html目录查找 index
  • x99芯片组服务器版叫什么,Intel X99主板、Z97主板以及H97主板的区别是什么?

    Intel X99主板 Z97主板以及H97主板的区别是什么 虽然让他出来丢人现眼 但是这个帖子却是冒了一定风险码出来的 题目就已经让人败坏了兴致 拿出来只会让专业人士嗤之以鼻 作为目前最新的Intel主板芯片组 9系列主板并没有受到很多朋
  • 印刷纸张尺寸,纸张种类规格

    印刷纸张尺寸 纸张种类规格 2007 07 25 15 17 正度16开 185x260 大度16开 210x285 开 又是什么单位 全开的纸能开出来多少张 就是多少开 例如 16K的就是全开开出16张 对开就是开出两张 一开是多大 全开
  • Cadence Orcad原理图导出pdf文件

    1 安装虚拟打印机 通过打印实现pdf文件输出 略 2 设置输出格式 1 点击file gt print gt print setup 2 设置尺寸与输出方向 3 点击确定 gt OK 开始转化并设置保存路径与文件名 3 打印出现页码错乱问
  • jquery获取隐藏元素的宽度高度

    info show 50 function var w info outerWidth console log w 注意 show的第一个参数不能为0否则在刷新页面或页面默认载入并显示该隐藏元素的时候 w仍然为0 虽然通过单击事件可以获取到
  • LeetCode343-整数拆分

    昨天晚上写作业时 腾讯的一条笔试通知邮件 着实让我有点吃惊 我三月份就投了鹅厂 身边的朋友早就面试了 自己的简历杳无音讯 本早就放弃了 却没想还能最后有次机会 害 要好好珍惜了 题目描述 给定一个正整数 n 将其拆分为至少两个正整数的和 并