leetcode每天5题-Day56-动态规划2

news2024/11/24 3:04:48

目录

  • 1. 整数拆分
  • 2. 不同的二叉搜索树
  • 3.

1. 整数拆分

343. 整数拆分-中等
讲解

动规

思路:拆分一个数 n 使之乘积最大,那么一定是拆分m个成近似相同的子数相乘才是最大的。

动规五部曲;

①确定dp数组(dp table)以及下标的含义
dp[i]的定义为:拆分数字i得到的最大乘积为dp[i]
②确定递推公式
状态转移方程 dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));
③dp数组如何初始化
dp[0] = 0(无意义),dp[1] = 0(无意义), dp[2] = 1;
④确定遍历顺序
dp[i] 是依靠 dp[i - j]的状态,所以遍历i一定是从前向后遍历,先有dp[i - j]再有dp[i]。

var integerBreak = function(n) {
    let dp = new Array(n + 1).fill(0);
    dp[2] = 1;
    for(let i = 3; 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^2)
空间复杂度:O(n)

贪心

思路:每次拆成n个3,如果剩下是4,则保留4,然后相乘(该结论需要数学证明其合理性)。

var integerBreak = function(n) {
    if(n === 2) return 1;
    if(n === 3) return 2;
    if(n === 4) return 4;

    let res = 1;
    while(n > 4) {
        res *= 3;
        n -= 3;
    }
    res *= n;
    return res;
};

时间复杂度:O(n)
空间复杂度:O(1)

2. 不同的二叉搜索树

96. 不同的二叉搜索树-中等
讲解

思路:列出n为1、2、3时的二叉搜索树,可以发现,n为3时的二叉搜索树的子树结构与n为1和2时的结构一样,也就是dp[3]会利用到dp[2]和dp[1]。

在这里插入图片描述

动规五部曲;

①确定dp数组(dp table)以及下标的含义
dp[i]的定义为:以1到i为节点组成的二叉搜索树的个数
②确定递推公式
状态转移方程 dp[i] += dp[j - 1] * dp[i - j]; ,其中 j -1j为头结点左子树节点数量,i - j 为以j为头结点右子树节点数量。
③dp数组如何初始化
dp[0] =1
④确定遍历顺序
节点数为i的状态是依靠 i 之前节点数的状态,所以遍历i一定是从前向后遍历。

var numTrees = function(n) {
    let dp = new Array(n + 1).fill(0);
    dp[0] = 1;
    for(let i = 1; i <= n; i++) {
        for(let j = 1; j <= i; j++) {
            dp[i] += dp[j - 1] * dp[i - j];
        }
    }
    return dp[n];
};

时间复杂度:O(n^2)
空间复杂度:O(n)

3.

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

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

相关文章

【数集项目之 MCDF】(五) 最终整合:MCDF顶层文件

根据前面几章的介绍&#xff0c;我们已经大致完成了MCDF的子模块设计和波形测试&#xff0c;分别是control_regisyer、slave_FIFO、arbiter、formatter。   当然&#xff0c;由于握手机制等一些信号检查在顶层模块中&#xff0c;更容易进行检查&#xff0c;也容易进行调整各个…

jsp+ssm计算机毕业设计 宠物医院管理系统【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

如何在加密市场中快人一步?

链上数据的透明度让任何人都能看到发生的关键事件&#xff0c;但行业内很少有人充分利用这一点&#xff0c;而大多数是在事件已经影响到他们的投资组合后才能做出反应。 然而&#xff0c;在这个行业中&#xff0c;一笔钱的转移就能把未知的项目变成独角兽&#xff0c;或者让价值…

【MATLAB教程案例61】使用matlab实现基于ResNet残差网络的数据分类仿真分析

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 1.软件版本 2.ResNet残差网络理论概述

基于jsp+mysql+ssm长诗圣地美食交流分享平台-计算机毕业设计

项目介绍 虽然现在各类美食网站犹如雨后春笋一般&#xff0c;一个一个的发展起来&#xff0c;但是综合性不强&#xff0c;有的只是介绍各类美食的做法&#xff1b;有的只是美食的营销&#xff1b;有的只是人们对于美食的评论。为了适应当代社会的需求&#xff0c;本系统的研究…

艾美捷CD8α体内抗体特异性及相关研究

艾美捷CD8α体内抗体特点&#xff1a; 1.研究可靠 2.可实现快速生产 3.首-次实验即可成功&#xff0c; 经过大量验证确认了特异性 艾美捷ichorbio抗CD8a体内抗体-低内毒素&#xff08;2.43&#xff09;是在符合cGMP的ISO质量标准9001:2015设施中生产的。ichorbio低内毒素抗体…

计算机毕业设计node.js+vue+Element电商后台管理系统

项目介绍 网络的广泛应用给生活带来了十分的便利。所以把电商后台管理与现在网络相结合,利用node技术建设电商后台管理系统,实现电商后台管理的信息化。则对于进一步提高电商后台管理发展,丰富电商后台管理经验能起到不少的促进作用。 电商后台管理系统能够通过互联网得到广泛…

正则的扩展

RegExp() 在es5中&#xff0c;RegExp的构造函数参数有两种情况 1、字符串 2、正则表达式 // 第一种情况 let regex new RegExp(abc, i)// 第二种情况 let regex2 /abc/i这两种情况是等价的 let s abc regex.test(s) regex2.test(s); // true在es5中这两种方式不能混用&a…

图解设计模式:动动手玩转迭代器模式

前言 &#x1f4e3; &#x1f4e3; &#x1f4e3; &#x1f4e2;&#x1f4e2;&#x1f4e2; ☀️☀️点开就是缘分认识一下&#xff0c;我是小冷。是一个兴趣驱动自学练习两年半的的Java工程师。 &#x1f4d2; 一位十分喜欢将知识分享出来的Java博主⭐️⭐️⭐️&#xff0c;…

JavaSE04

形参或者返回值是类名的话&#xff1a;方法的形参是类名&#xff0c;其实是需要的类名的对象。方法的返回值是类名的话&#xff0c;其实返回的是对象。 接口名 作为形参或者 方法的返回值&#xff1a;主要对应的是接口的实现类对象。 内部类的特点:内部类可直接访问外部类的成…

Unity中的C#脚本都继承了Monobehaviour类(Monobehaviour类的分析)

1、Monobehaviour类 Unity中的脚本都是继承Monobehaviour&#xff0c;定义了脚本的基本行为。必然是继承. 我们之前所熟知的声明周期函数。 除了必然事件&#xff0c;还定义了对各种特定事件的相应函数&#xff0c;均已On开头 MonoBehaviour中的事件响应函数都是已On开头的&am…

1 CPP11基础篇(快速学习)

另外还有 long double 不少于double 不低于double 注意&#xff1a; 在VS和Linux中 long double占用的内存空间分别是8和16个字节 c11原始字面量 void的关键字 在C中&#xff0c;void表示为无类型 主要有3个用途 1、函数的返回值用void 表示函数没有返回值 2、函数的参数填…

修改oracle11g的awr快照参数

1、select * from v$version; 2、select * from dba_hist_wr_control; 检查当前系统的保留时间为8天,1小时采样一次. 3、这里设置每半个小时收集一次&#xff0c; 收集到的数据保留15天&#xff0c;单位都是秒。 exec dbms_workload_repository.modify_snapshot_settings(ret…

[附源码]计算机毕业设计的图书互换系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

web前端网页设计期末课程大作业:旅游网页主题网站设计——三亚旅游网页设计(6个页面) HTML+CSS+JavaScript

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

类装载器ClassLoader 、执行引擎ExecutionEngine【Java培训】

1. 定义 负责加载class文件&#xff0c;class文件在文件开头有特定的文件标示&#xff0c;并且ClassLoader只负责class文件的加载&#xff0c;至于它是否可以运行&#xff0c;则由Execution Engine决定。 Java培训 2. 类加载器分类 虚拟机自带的加载器启动类加载器&#xff0…

【现代机器人学】学习笔记六:闭链运动学

这一章的内容主要讲并联机器人的相关算法&#xff0c;内容在全书中属于比较少&#xff0c;仅仅介绍概念的章节。 恰好部门中有一位同事就是专门做并联机器人出身的博士&#xff0c;也请他帮忙看了一下内容&#xff0c;但他觉得写书的这个人可能也不是非常懂并联机器人&#xf…

Java集合——Collection

Collection集合 Collection接口下主要有三大子接口 List Queue Set 1. List List是有序可重复集合&#xff0c;根据索引下标来访问元素 List接口常见的三个实现类&#xff1a;ArrayList 、LinkedList、Vector 特点&#xff1a; 集合中的元素允许重复集合中的元素有序&…

UE4 Cook指定平台资源

内容烘焙 | 虚幻引擎文档 (unrealengine.com) 虚幻引擎以内部使用的特定格式存储内容资源&#xff0c;如PNG用于存储纹理 数据&#xff0c;WAV用于音频数据。但是&#xff0c;该内容需要针对各平台转换为不同的格式&#xff0c; 因为平台使用专有格式&#xff0c;或者平台不支…

Revit中“幕墙网格”编辑斜向网格和柱断墙梁

一、Revit中“幕墙网格”编辑斜向网格 我们可以为幕墙添加任意间距的水平和垂直的网格线&#xff0c;但是对于斜向网格线我们却只能通过设置其实例属性中的角度来控制其生成一系列等间距的斜向网格&#xff0c;那么如果遇到不等间距的斜向网格线我们应该如何绘制呢? 首先通过设…