暂时pass的题目的学习笔记(按类型分类 ):动态规划、递归

news2024/9/24 9:25:14

动态规划类

学习笔记来自公众号labuladong

  • 动态规划的一般形式就是求最值——其核心问题是穷举
  • 但动态规划的穷举有些特别,因为这类问题存在重叠子问题 如果暴力穷举的话效率会极其低下,所以需要**「备忘录」或者「DP table」**来优化穷举过程,避免不必要的计算
  • 动态规划问题一定具备最优子结构,才能通过子问题的最值得到原问题的最值,要符合“最优子结构”,子问题间必须互相独立。
  • 只有正确列出状态转移方程才能正确地穷举
  • 明确「状态」 -> 定义 dp 数组/函数的含义 -> 明确「选择」-> 明确 base case
  1. 重叠子问题可以理解为重复计算的部分,解决重叠子问题可以通过备忘录和dptable:

①备忘录:
“明确了问题,其实就已经把问题解决了一半。即然耗时的原因是重复计算,那么我们可以造一个「备忘录」”
每次算出某个子问题答案后别急着返回,先记到备忘录中再返回;每次遇到一个子问题先去备忘录查一查,如果之前已经解决过了就直接拿来用,不要重复去计算。
一般使用数组或者哈希表充当备忘录
但带备忘录的递归解法叫做自顶向上,即从上向下延伸,一个规模较大的问题向下逐渐分解规模,直到触底,再逐层返回答案呢
自底向上,是直接从最底下,最简单,问题规模最小开始往上推,直到推到想要的答案,一般动态规划都是自底向上,“这也是为什么动态规划一般都脱离了递归,而是由循环迭代完成计算”

② dp数组的迭代解法:在这张表上完成自底向上的推算

正则表达式匹配

6/100正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。

'.' 匹配任意单个字符
'*' 匹配零个或多个前面的那一个元素

所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。
在这里插入图片描述

递归

单反用到递归的问题,最好都画出递归树,这对分析算法的复杂度,需按照算法是否低效以及低效的原因都有帮助
递归的算法时间复杂度计算:子问题个数乘以解决一个子问题需要的时间

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

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

相关文章

09.复刻ChatGPT,自我进化,AI多智能体

文章目录 复刻ChatGPT原因准备开整ALpacaVicuna GPT-4 EvaluationDolly 2.0其他合集Self-improve 自我进化表现形式法1:自我催眠法2:Agent交互法3:ReasonAct AI多智能体AI规划角色的一天加入亿点点细节(外界刺激)Refle…

k8s引用环境变量

一 定义环境变量 ① 如何在k8s中定义环境变量 env、configmap、secret补充: k8s 创建Service自带的环境变量 ② 从pod属性中获取 kubectl explain deploy.spec.template.spec.containers.env.valueFrom关注: configMapKeyRef、fieldRef 和 resour…

15、pytest的fixture调用fixture

官方实例 # content of test_append.py import pytest# Arrange pytest.fixture def first_entry():return "a"# Arrange pytest.fixture def order(first_entry):return [first_entry]def test_string(order):# Actorder.append("b")# Assertassert orde…

Angular 进阶之四:SSR 应用场景与局限

应用场景 内容丰富,复杂交互的动态网页,对首屏加载有要求的项目,对 seo 有要求的项目(因为服务端第一次渲染的时候,已经把关键字和标题渲染到响应的 html 中了,爬虫能够抓取到此静态内容,因此更…

合理布局CRM系统,提升工作效率

一般来说中小企业试用的CRM系统的销售管理模块主要服务于销售人员,CRM系统通过为销售人员提供一系列销售自动化工具,来简化他们的工作,加速销售周期。那么,中小企业CRM系统如何提高销售效率? 一、通用功能 1、销售管…

Visual Studio2022创建Windows服务程序

文章目录 Visual Studio2022创建Windows服务程序打开工具创建新项目创建成功重命名服务添加安装程序编写逻辑生成程序安装服务打开服务启动服务停止服务卸载服务修改项目配置重新生成安装服务启动服务 Visual Studio2022创建Windows服务程序 打开工具 创建新项目 创建成功 重命…

基于javaweb实现的物业管理系统

一、系统架构 前端:jsp | jquery | bootstrap 后端:servlet | ojdbc 环境:jdk1.6 | mysql 二、 代码及数据库 三、功能介绍 01. 登录页 02. 首页 03. 楼栋管理 04. 房屋管理 05. 业主管理 06. 物资管理 07. 收费管理-收费项目管理 0…

为什么安秉信息的源代码防泄密软件这么稳定?

现在很多研发性企业都会意识到企业的源代码文件需要防泄密保护,现在很多企业对于源代码只是用了git或svn版本管理服务器进行了简单的代码统一管控。虽然现在对于源代码防泄密,有专业的源代码加密软件,但是很多企业,对源代码加密进…

写给初学者的 HarmonyOS 教程 -- 状态管理(@State/@Prop/@Link 装饰器)

State 装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就和自定义组件的渲染绑定起来。当状态改变时,UI 会发生对应的渲染改变(类似 Compose 的 mutablestateof )。 Prop 装饰的变量可以和父组件建立单…

配置texstudio编译器

目录 1 .编辑器介绍2. 软件下载3. 测试编辑器 1 .编辑器介绍 latex可用的编辑器有配套的texstudio软件,也可以通过配置VScode来作为编辑器,但是个人感觉vscode配置较为复杂(失败了),所以本篇介绍texstudio的配置&…

Java Socket编程之基于TCP协议通信

1.说明 Socket(套接字)是计算机网络编程中用于实现网络通信的一种编程接口或抽象概念。 它提供了一种标准的接口,使应用程序能够通过网络与其他计算机进行通信。 Socket可以看作是应用程序与网络之间的一个通信端点,类似于电话中…

qt 5.15.2 主窗体事件及绘制功能

qt 5.15.2 主窗体事件及绘制功能 显示主窗体效果图如下所示&#xff1a; main.cpp #include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;w.setFixedWidth(600);w.setFixedHeight(6…

什么是 AWS IAM?如何使用 IAM 数据库身份验证连接到 Amazon RDS(下)

在《什么是 AWS IAM&#xff1f;如何使用 IAM 数据库身份验证连接到 Amazon RDS&#xff08;上&#xff09;》中我们已经阅读了有关LAM的部分内容&#xff0c;这篇在文章中我们将继续为您展开↓ dbForge Studio for MySQL是一款专业的数据库管理、开发软件&#xff0c;它能够使…

探索C++14新特性:更强大、更高效的编程

探索C14新特性&#xff1a;更强大、更高效的编程 C14并没有太大的改动&#xff0c;就连官方说明中也指出&#xff0c;C14相对于C11来说是一个比较小的改动&#xff0c;但是在很大程度上完善了C11&#xff0c;所以可以说C14就是在C11标准上的查漏补缺。 C14在2014年8月18日正式…

Qt篇——QChartView实现鼠标滚轮缩放、鼠标拖拽平移、鼠标双击重置缩放平移、曲线点击显示坐标

话不多说。 第一步&#xff1a;自定义QChartView&#xff0c;直接搬 FirtCurveChartView.h #ifndef FITCURVECHARTVIEW_H #define FITCURVECHARTVIEW_H #include <QtCharts>class FitCurveChartView : public QChartView {Q_OBJECTpublic:FitCurveChartView(QWidget *…

apk反编译修改教程系列---简单去除apk开屏广告【五】

往期教程&#xff1a; apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中的图片 任意更换apk桌面图片【三】 apk反编译修改教程系列---简单…

算法学习—排序

排序算法 一、选择排序 1.算法简介 选择排序是一个简单直观的排序方法&#xff0c;它的工作原理很简单&#xff0c;首先从未排序序列中找到最大的元素&#xff0c;放到已排序序列的末尾&#xff0c;重复上述步骤&#xff0c;直到所有元素排序完毕。 2.算法描述 1&#xff…

Linux中项目部署步骤

安装jdk&#xff0c;tomcat 安装步骤 1&#xff0c;将压缩包&#xff0c;拷贝到虚拟机中。 通过工具&#xff0c;将文件直接拖到虚拟机的/home下 2&#xff0c;回到虚拟机中&#xff0c;查看/home下&#xff0c;有两个压缩文件 3&#xff0c;给压缩文件做解压缩操作 tar -z…

分享70个节日PPT,总有一款适合您

分享70个节日PPT&#xff0c;总有一款适合您 70个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1IRIKuFoGjQJ14OVkeW_mDQ?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…