LeetCode刷题笔记【31】:动态规划专题-3(整数拆分、不同的二叉搜索树)

文章目录

  • 前置知识
  • 343. 整数拆分
    • 题目描述
    • 解题思路
    • 代码
    • 进一步优化
  • 96.不同的二叉搜索树
    • 题目描述
    • 解题思路
    • 代码
    • 优化改进
  • 总结

前置知识

参考前文

参考文章:
LeetCode刷题笔记【29】:动态规划专题-1(斐波那契数、爬楼梯、使用最小花费爬楼梯)
LeetCode刷题笔记【30】:动态规划专题-2(不同路径、不同路径 II)

343. 整数拆分

题目描述

截图

LeetCode链接:https://leetcode.cn/problems/integer-break/description/

解题思路

思路: 动态规划
建立dp数组, 表示下标i的最大乘积
对每个新的i, 将i分成(i=x+y), dp[i] = max(dp[x], x) * max(dp[y], y);

代码

class Solution {
public:int integerBreak(int n) {vector<int> dp(n+1, INT_MIN);dp[0] = 0;dp[1] = 0;dp[2] = 1;if(n<=2)return dp[n];for(int i=3; i<=n; ++i){for(int x=1; x<=i/2; ++x){int y = i-x;dp[i] = max(dp[i], max(dp[x], x) * max(dp[y], y));}}return dp[n];}
};

进一步优化

可以将递推构建dp数组的过程进一步简化为以下形式
效率会更高, 但是理解起来困难一些, 也不容易想到

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));}
}

96.不同的二叉搜索树

题目描述

截图

LeetCode链接:https://leetcode.cn/problems/unique-binary-search-trees/description/

解题思路

动态规划
dp数组中dp[i]表示有i个节点的时候有dp[i]种搜素树
dp[0]=0, dp[1]=1, dp[2]=2
dp[i]的时候, 用j遍历1到i, dp[i] += dp[j-1] * dp[i-j];
在这里插入图片描述

代码

class Solution {
public:int numTrees(int n) {vector<int> dp(max(n+1,5),0);dp[0] =1;dp[1] = 1;dp[2] = 2;if(n<=2)return dp[n];for(int i=3; i<=n; ++i){for(int j=1; j<=i; ++j){dp[i] += dp[j-1] * dp[i-j];}}return dp[n];}
};

优化改进

不用初始化到2, 到1就行了

class Solution {
public:int numTrees(int n) {vector<int> dp(n+1,0);dp[0] =1;dp[1] = 1;for(int i=2; i<=n; ++i){for(int j=1; j<=i; ++j){dp[i] += dp[j-1] * dp[i-j];}}return dp[n];}
};

总结

很多动态规划题目, 因为涉及到递推, 前后数值的查询, 所以直接脑中空想比较困难;
想不清楚的时候最好动笔写写画画, 思路会清晰很多.

本文参考:
整数拆分
不同的二叉搜索树

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

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

相关文章

【Spring面试】六、@Autowired、@Configuration、第三方Bean的配置

文章目录 Q1、如何让自动注入没有找到依赖Bean时不报错&#xff1f;Q2、如何让自动注入找到多个依赖的Bean时不报错&#xff1f;Q3、Autowired注解有什么作用&#xff1f;Q4、Autowired和Resource之间的区别Q5、Autowired注解自动装配的过程是怎样的&#xff1f;Q6、Configurat…

idea 无法创建Javaweb项目也无法添加web模块

只有一个原因&#xff0c;就是使用的是社区版的idea&#xff0c;不是专业版的 如果想要idea创建动态的javaweb项目&#xff0c;还得去下载专业版 使用全新的专业版本&#xff0c;就有web模块了

冠达管理:“A股”上热搜,个股普跌!这一概念,逆市掀涨停潮

A股商场和港股商场今天上午再度低位震动&#xff0c;“A股”词条冲上微博热搜。 ​ A股商场方面&#xff0c;主要指数均跌落&#xff0c;创业板指创年内新低&#xff0c;TMT赛道团体走低&#xff0c;拖累商场人气。上午海峡西岸概念板块成为商场最大亮点之一&#xff0c;个股…

使用高斯混合模型进行聚类

一、说明 高斯混合模型 &#xff08;GMM&#xff09; 是一种基于概率密度估计的聚类分析技术。它假设数据点是由具有不同均值和方差的多个高斯分布的混合生成的。它可以在某些结果中提供有效的聚类结果。 二、Kmean算法有效性 K 均值聚类算法在每个聚类的中心周围放置一个圆形边…

Neo4j图数据库实践——基于知识图谱方法开发构建猪类养殖疾病问答查询系统

Neo4j是一个开源的、高性能的图形数据库。它被设计用于存储、检索和处理具有复杂关系的大规模数据。与传统的关系型数据库不同&#xff0c;Neo4j使用图形结构来表示数据&#xff0c;其中节点表示实体&#xff0c;边表示实体之间的关系。这使得Neo4j在处理关系密集型数据时非常强…

【GNN 03】PyG

工具包安装&#xff1a; 不要pip安装 https://github.com/pyg-team/pytorch_geometrichttps://github.com/pyg-team/pytorch_geometric import torch import networkx as nx import matplotlib.pyplot as pltdef visualize_graph(G, color):plt.figure(figsize(7, 7))plt.xtic…

企业架构LNMP学习笔记14

默认官方模块&#xff1a; Gzip压缩&#xff1a; 压缩文件&#xff0c;使文件变小了&#xff0c;传输更快了&#xff0c;目前大部分市场浏览器都支持Gzip。 传输的时候省流量。 目的是为了提高用户的加载速度。 #开启gzip压缩 gzip on; #http协议版本 gzip_http_version 1.0…

Maven 知识点总结

文章目录 Maven1、Maven 坐标2、Maven 仓库3、Maven 依赖依赖配置依赖范围依赖调解原则排除依赖 4、Maven 生命周期5、Maven 聚合与继承 Maven Maven是一个项目管理工具&#xff0c;它包含了项目对象模型&#xff08;POM&#xff1a;Project Object Model&#xff09;&#xf…

无人机通信协议MAVLink简介

Micro Air Vehicle Link(简称MAVLink)用于无人系统(例如,机器人、无人机、无人车、无人船和无人潜航器)。它定义了一组无人系统和地面站之间的消息交换规则。此协议广泛用于无人驾驶系统中,特别是ArduPilot和PX4无人驾驶系统,MAVLink协议提供了强大的功能,不仅用于监视…

Linux安装Redis(详细教程)

Linux安装Redis 注&#xff1a;希望将redis安装到此目录 /usr/local/redis 希望将安装包下载到此目录 /usr/local/src 可自己选择 1.创建安装目录/usr/local/redis mkdir /usr/local/redis 2.进入安装包目录 cd /usr/local/redis 3.进行下载安装包 wget https://download…

用python实现基本数据结构【03/4】

说明 如果需要用到这些知识却没有掌握&#xff0c;则会让人感到沮丧&#xff0c;也可能导致面试被拒。无论是花几天时间“突击”&#xff0c;还是利用零碎的时间持续学习&#xff0c;在数据结构上下点功夫都是值得的。那么Python 中有哪些数据结构呢&#xff1f;列表、字典、集…

JDK8新特性--函数式接口--(Consumer的概念理解,模拟练习,企业实战)全流程彻底搞懂

背景&#xff0c;起因是因为在项目开发过程中&#xff0c;发现了一处代码的写法觉得很新奇看不懂&#xff0c;了解后发现是用到了函数式接口的知识。特此学习记录&#xff0c;整体过程梳理在本文。如果你不满足就会写个CURD&#xff0c;业务代码只会new来new去&#xff0c;代码…

软件工程评级B-,有大量调剂名额。北京联合大学考情分析

北京联合大学(B-) 考研难度&#xff08;☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1239字&#xff0c;预计阅读&#xff1a;3分钟 2023考情概况 北京…

从零开始-与大语言模型对话学技术-gradio篇(4)

前言 本文介绍「星火杯」认知大模型场景创新赛中的落选项目- AI命理分析系统&#xff0c;属于个人娱乐练手。总结提炼了往期文章精华并发掘出新的知识。 包括本地部署版本和Web在线版本&#xff0c;两种打包方式基于 半自动化使用.bat手动打包迁移python项目 如何把 Gradio …

Java——》synchronized互斥性

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

你应该知道的几个国产化平台-行云管家

近年来我国国产化加速发展&#xff0c;国产化平台也越来越多。但还有很多小伙伴不知道有哪些&#xff0c;这里就给大家汇总几个&#xff0c;大家应该知道的国产化平台。 你应该知道的几个国产化平台 1、cpu&#xff1a;龙芯、飞腾、鲲鹏、兆芯、海光、申威 2、浏览器&#xf…

Vercel的下一件大事:AI SDK和开发人员加速器

Vercel CEO Guillermo Rauch说&#xff0c;构建AI应用程序是开发人员注册Vercel的第二大原因。Ergo&#xff1a;Vercel AI SDK和加速器。 在 2020 年代&#xff0c;很少有公司比流行的 React 框架 Next.js 的管理者 Vercel 对前端开发人员生态系统产生更大的影响。当我在 2020…

骨传导耳机怎么听到声音?骨传导耳机是否会对听力造成损害?

其实骨传导耳机让我们听到的的传声原理很简单&#xff0c;而且骨传导现象很常见&#xff0c;简单的来说&#xff0c;就是像我们平时吃薯片或者挠头发&#xff0c;无论声音再小&#xff0c;自己也能听见&#xff0c;这就是骨传导的现象&#xff0c;也是为啥骨传导耳机不需要入耳…

GitHubGiteeGitlab极狐(JihuLab)同时生成并配置SSH公私钥详细过程

GitHub-微软-github.com Gitee-开源中国- gitee.com Gitlab-乌克兰GitLab 公司-gitlab.com 极狐(JihuLab)-中国代理商运营的Gitlab -gitlab.cn或者jihulab.com 使用SSH公钥可以让你在你的电脑和GitHub等平台通讯的时候使用更安全的连接&#xff08;Git的Remote要使用SSH地址&a…

计算机竞赛 大数据疫情分析及可视化系统

文章目录 0 前言2 开发简介3 数据集4 实现技术4.1 系统架构4.2 开发环境4.3 疫情地图4.3.1 填充图(Choropleth maps)4.3.2 气泡图 4.4 全国疫情实时追踪4.6 其他页面 5 关键代码最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 大数据疫…