LeetCode-343.整数拆分、记忆化递归

2023-11-01

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1。
力扣(LeetCode)第343题

题目分析

①.暴力枚举
一个正整数 n 拆分成两个数,可用枚举所有情况,1+n-1、2+n-2、…、i+(n-i) 、(n-1)+1,比较每种情况相乘的结果即最终的值;对于每种情况:i+(n-i),比较 (n-i) 和 (n-i) 继续拆分得到值的大小来确定是否拆分。
在这里插入图片描述
②.map 优化
对于每种情况 i+(n-i) 求解的过程中,都会对 n-i … 1 的所有整数的拆分进行求解,因此递归过程存在重复计算,可以用 map 保存过程中的值,即记忆化搜索。

代码示例

class Solution {
public:
    unordered_map<int,int> mp;//建立备忘录,用于记忆化搜索
    int integerBreak(int n) {
        mp[1] = 1;//初始化
        mp[2] = 1;
        return dp(n);    
    }
    int dp(int n)
{
        int res = 0;
        if( mp.find(n) != mp.end())
        {
            return mp[n];//备忘录中存在,直接返回结果
        }
        for(int i = 1;i < n;i++)//枚举所有情况
        {
            int temp = max(i*(n-i),i*dp(n-i));//判断是否继续拆分
            res = max(res,temp);
        }
        mp[n] = res;
        return res;
    }
};

在这里插入图片描述

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

LeetCode-343.整数拆分、记忆化递归 的相关文章

  • 使用 ADAL v3 使用 ClientID 对 Dynamics 365 进行身份验证

    我正在尝试对我们的在线 Dynamics CRM 进行身份验证以使用可用的 API 我能找到的唯一关于执行此操作的官方文档是 https learn microsoft com en us dynamics365 customer enga
  • 捕获 .aspx 和 .ascx 页面中的异常

    问题说明了一切 请看以下示例代码 ul li li ul
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • strlen() 编译时优化

    前几天我发现你可以找到编译时strlen使用这样的东西 template
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • 来自嵌入图像的 BitmapSource

    我的目标是在 WPF 窗口上重写 OnRender 方法中绘制图像 someImage png 它是嵌入资源 protected override void OnRender System Windows Media DrawingCont
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle
  • 如何从 Windows Phone 7 模拟器获取数据

    我有一个 WP7 的单元测试框架 它在手机上运行 结果相当难以阅读 因此我将它们写入 XDocument 我的问题是 如何才能将这个 XML 文件从手机上移到我的桌面上 以便我可以实际分析结果 到目前为止 我所做的是将 Debugger B
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调

随机推荐

  • iptables 规则管理

    参考 http www zsythink net archives 1517 有两台测试机 zk02 192 168 27 152 zk03 192 168 27 153 目录 1 增加规则 2 追加规则 1 增加规则 首先看一条命令 表示
  • C/C++

    文章目录 2 3 C语言内存空间的使用 数组 数组的定义及初始化 数组空间的初始化 空间的第一次赋值 和逐一赋值是一样的 代表空间的限制块 char strcpy 工程禁用 strncpy 推荐 非字符串空间 memcpy 指针与数组 指针
  • Genlovy_Hoo大神的杰作

    转 支持向量机学习笔记 支持向量机学习笔记 呕心沥血整理的SVM学习笔记 完整总结了SVM的思想和整个求解过程 里面有诸多本人在学习过程中的想法 希望对初学者有帮助 pdf下载地址 http download csdn net detail
  • 十大经典排序算法动画与解析

    排序算法是 数据结构与算法 中最基本的算法之一 排序算法可以分为内部排序和外部排序 内部排序是数据记录在内存中进行排序 而外部排序是因排序的数据很大 一次不能容纳全部的排序记录 在排序过程中需要访问外存 常见的内部排序算法有 插入排序 希尔
  • MFC常见问题以及解决方法_MFC下文本编辑框按下回车后窗口退出

    这里主要介绍遇到这种方法的解决方案 解决方法可能有多种 但这里只给出有效的一种 这里不会详细说明出现问题的原因以及为什么这样解决 想了解更多可以百度 写这个主要是防止以后忘记 做个简单的笔记 问题 MFC对话框程序 文本编辑框 Edit C
  • 学透JavaScript 你真的懂 Array 吗?

    前言 科普 JavaScript 揭开 JavaScript 神秘面纱 直击 JavaScript 灵魂 此系列文章适合任何人阅读 本文章内容为 标准化数组 数组与数组容器 ECMAScript 规范中 Array API 讲解 如果你想用
  • 【图像处理算法常用数据集】整理第一弹

    目录 一 通用 二 自己整理的一些数据集 Berkeley Segmentation Dataset BSDS Set14 Urban 100 Kodak dataset CBSD68 DIV2K 一 通用 可以在一些学术搜索引擎上查找关于
  • xctf-supersqli

    题目链接 1 首先打开题目链接是一个提交框 习惯性的先提交1看看返回什么结果 返回了一个数组 再来提交1 看看 根据回显可知这里可能存在sql注入 而且数据库为mysql 又根据报错提示提交1 看看能不能闭合 提交后回显正常 说明是单引号闭
  • 读书笔记:卓有成效的管理者

    德鲁克的著作堪称 经典 经得起时间的考验 值得人们一读再读 常读常新 而 卓有成效的管理者 是他的著作中我比较喜欢的一本 管理者必须卓有成效 卓有成效是可以学会的 管理者的卓有成效对个人的提高 对机构的发展 对现代社会生存和运作都是必不可少
  • 安卓性能测试(针对UE4发布的apk做性能分析)

    用UnrealInsights 抓取安卓设备性能 1 UE4官网Unreal Insights介绍 https docs unrealengine com 4 27 zh CN TestingAndOptimization Performa
  • 如何使用QString::arg()

    如何使用QString arg 在Qt Asistant中 QString arg的定义如下 QString QString arg const QString a int fieldWidth 0 const QChar fillChar
  • 一周AI回顾

    本期一周AI看点包括行业热点 投融资 业界观点 技术前沿以及应用等方面 行业 中科曙光研制出首款搭载寒武纪AI芯片的人工智能服务器 中科曙光近日成功研制出首款搭载寒武纪AI芯片的人工智能服务器 命名为 Phaneron 主要是面向深度学习的
  • 第十一届蓝桥杯单片机决赛总结

    先说结果 提前5天准备 11 14号下午2点结束比赛 11 15号下午13点出结果 很遗憾国三 关于决赛后的感想 1 吐槽 由于疫情的影响 无法去北京公费旅游实属遗憾 不过奖金的诱惑 也丝毫不影响我对比赛的热情 2 回归正题 比赛分为 客观
  • Java eclipse闪退原因,针对Eclipse闪退的两种解决方案

    闪退情况是 双击Eclipse登陆按钮 显示图标后 紧接着关闭 1 到eclipse文件夹中的eclipse ini打开编辑在最后加入下面代码保存即可 Dorg eclipse swt browser DefaultType mozilla
  • jar包解压后 再重新压缩成jar包的指令

    jar包解压后 再重新压缩成jar包的指令 lt lt jar cvf0M name jar gt gt 操作步骤如下 1 将jar包放在一个没有任何内容的文件夹中解压 注 解压时解压到当前文件夹即可 解压完成后如图 解压后将原jar包删除
  • android studio 预览问题 :java.lang.NoClassDefFoundError: com/android/util/PropertiesMap

    java lang NoClassDefFoundError com android util PropertiesMap android studio 预览时出现上述问题 把sdk改下 如下图
  • 为什么 list.sort() 比 stream().sorted() 要更快?测试结果把我惊呆了!

    程序员的成长之路 互联网 程序员 技术 资料共享 关注 阅读本文大概需要 5 5 分钟 来自 juejin cn post 7262274383287500860 看到一个评论 里面提到了list sort 和list strem sort
  • 解决修改CSS文件后网页显示不生效问题

    刚开始学CSS HTML CSS Div虽说是上个世纪就有产生的发明 但我却不会 不过 不要紧 学就是了 问题是这样的 我编写HTML文件 并调用CSS文件实现布局美化 然后 经常出现明明已经修改过CSS文件 但 HTML页面却并没有产生变
  • java dialog居中显示_jdialog居中

    推荐 方法一 方法一 简单的办法 在Java中让JFrame和JDialog居中显示的方法 1 JFrame在屏幕中居中显示 只须在主类的构造方法里面加上一句 this setLocationRelativeTo null 2 若要让JDi
  • LeetCode-343.整数拆分、记忆化递归

    给定一个正整数 n 将其拆分为至少两个正整数的和 并使这些整数的乘积最大化 返回你可以获得的最大乘积 示例 1 输入 2 输出 1 解释 2 1 1 1 1 1 力扣 LeetCode 第343题 题目分析 暴力枚举 一个正整数 n 拆分成