当前位置: 首页 > news >正文

代码随想录算法训练营第45天

115.不同的子序列

但相对于刚讲过 392.判断子序列,本题 就有难度了 ,感受一下本题和 392.判断子序列 的区别。

代码随想录

class Solution {public int numDistinct(String s, String t) {int lenS = s.length();int lenT = t.length();int[][] dp = new int[lenS + 1][lenT + 1];for (int i = 0; i <= lenS; i++) {dp[i][0] = 1; // An empty string t has one way to be a subsequence of any string s}for (int i = 1; i <= lenS; i++) {for (int j = 1; j <= lenT; j++) {if (s.charAt(i - 1) == t.charAt(j - 1)) {dp[i][j] = dp[i - 1][j - 1] + dp[i][j - 1];} else {dp[i][j] = dp[i][j - 1];}}}return dp[lenS][lenT];}
}

583. 两个字符串的删除操作

本题和动态规划:115.不同的子序列 相比,其实就是两个字符串都可以删除了,情况虽说复杂一些,但整体思路是不变的。

代码随想录

class Solution {public int minDistance(String word1, String word2) {int len1 = word1.length();int len2 = word2.length();int[][] dp = new int[len1 + 1][len2 + 1];for (int i = 0; i <= len1; i++) {dp[i][0] = i;}for (int j = 0; j <= len2; j++) {dp[0][j] = j;}for (int i = 1; i <= len1; i++) {for (int j = 1; j <= len2; j++) {if (word1.charAt(i - 1) == word2.charAt(j - 1)) {dp[i][j] = dp[i - 1][j - 1];} else {dp[i][j] = Math.min(dp[i - 1][j - 1] + 2,Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1));}}}return dp[len1][len2];}
}

72. 编辑距离

最终我们迎来了编辑距离这道题目,之前安排题目都是为了 编辑距离做铺垫。

代码随想录

public int minDistance(String word1, String word2) {int m = word1.length();int n = word2.length();int[][] dp = new int[m + 1][n + 1];for (int i = 1; i <= m; i++) {dp[i][0] =  i;}for (int j = 1; j <= n; j++) {dp[0][j] = j;}for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (word1.charAt(i - 1) == word2.charAt(j - 1)) {dp[i][j] = dp[i - 1][j - 1];} else {dp[i][j] = Math.min(Math.min(dp[i - 1][j - 1], dp[i][j - 1]), dp[i - 1][j]) + 1;}}}return dp[m][n];
}

编辑距离总结篇

做一个总结吧

代码随想录

相关文章:

代码随想录算法训练营第45天

115.不同的子序列 但相对于刚讲过 392.判断子序列&#xff0c;本题 就有难度了 &#xff0c;感受一下本题和 392.判断子序列 的区别。 代码随想录 class Solution {public int numDistinct(String s, String t) {int lenS s.length();int lenT t.length();int[][] dp new …...

solidity合约创建

合约可以通过使用new关键字来创建其他合约的实例。 这个过程会执行被创建合约的构造函数&#xff08;如果存在的话&#xff09;&#xff0c;并返回一个指向新创建合约的地址的引用。 这种方式允许智能合约动态地在区块链上部署新合约&#xff0c;并与它们交互。 通过 new 创…...

队列---循环队列实现

循环队列详解 概述 循环队列是一种基于数组实现的队列数据结构&#xff0c;其中队列的队首和队尾是通过模运算连接起来形成一个逻辑上的环形结构。这样可以有效地利用数组的空间&#xff0c;避免出现“假溢出”的情况。 结构体定义 循环队列的结构体定义如下&#xff1a; …...

【视频讲解】后端增删改查接口有什么用?

B站视频地址 B站视频地址 前言 “后端增删改查接口有什么用”&#xff0c;其实这句话可以拆解为下面3个问题。 接口是什么意思&#xff1f;后端接口是什么意思&#xff1f;后端接口中的增删改查接口有什么用&#xff1f; 1、接口 概念&#xff1a;接口的概念在不同的领域中…...

双指针hard题

[LeetCode]4. Median of Two Sorted Arrays 中文 - YouTube 依赖merge sort和priorityqueue的废物 正式变身山景城一姐小迷妹✪ω✪ 寻找正序数组中位数 class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {int len1 nums1.length;int len2 …...

前端实现【 批量任务调度管理器 】demo优化

一、前提介绍 我在前文实现过一个【批量任务调度管理器】的 demo&#xff0c;能实现简单的任务批量并发分组&#xff0c;过滤等操作。但是还有很多优化空间&#xff0c;所以查找一些优化的库&#xff0c; 主要想优化两个方面&#xff0c; 上篇提到的&#xff1a; 针对 3&…...

【数据结构】包装类和泛型

&#x1f389;欢迎大家收看&#xff0c;请多多支持&#x1f339; &#x1f970;关注小哇&#xff0c;和我一起成长&#x1f680;个人主页&#x1f680; ⭐在更专栏Java ⭐数据结构 ⭐已更专栏有C语言、计算机网络⭐ &#x1f451;目录 包装类&#x1f319; ⭐基本类型对应的包…...

浅学爬虫-数据存储

在数据爬取完成后&#xff0c;我们需要将数据存储起来&#xff0c;以便于后续的分析和处理。常见的数据存储方式包括存储到CSV文件和存储到数据库。下面我们详细介绍如何实现这些存储方式。 存储到CSV CSV&#xff08;Comma-Separated Values&#xff09;文件是一种常用的文本…...

十六、maven git-快速上手(智慧云教育平台)

&#x1f33b;&#x1f33b; 目录 一、概述及项目管理工具介绍1.1 项目介绍1.2 maven 介绍及其配置1.2.1 maven 介绍1.2.2 maven 下载与配置 1.3 pom 中常见标签的使用1.4 后端项目环境的搭建1.5 Git 简介1.6 Git 的基本使用1.6.1 码云的注册与仓库创建1.6.2 上传代码到码云仓库…...

chrome/edge浏览器插件开发入门与加载使用

同学们可以私信我加入学习群&#xff01; 正文开始 前言一、插件与普通前端项目二、开发插件——manifest.json三、插件使用edge浏览器中使用/加载插件chrome浏览器中使用/加载插件 总结 前言 chrome插件的出现&#xff0c;初衷可能是为了方便用户更好地控制浏览器&#xff0c…...

【完美解决】 TypeError: ‘str’ object does not support item assignment

【完美解决】 TypeError: ‘str’ object does not support item assignment 在Python编程中&#xff0c;遇到TypeError: str object does not support item assignment这样的错误通常意味着你试图修改字符串中的某个字符&#xff0c;但字符串是不可变类型&#xff0c;不支持这…...

Android SurfaceFlinger——渲染开始帧(四十三)

通过前面的文章我们介绍了 SurfaceFlinger 图层合成的整体流程,已经对应步骤的前五步,这里我们开始介绍帧渲染流程的第一步——开始帧。 1.更新输出设备的色彩配置文件2.更新与合成相关的状态3.计划合成帧图层4.写入合成状态5.设置颜色矩阵6.开始帧7.准备帧数据以进行显示(异…...

fastadmin搜索栏实现某字段动态下拉搜索

记录&#xff1a;fastadmin搜索栏实现某字段动态下拉搜索 方式一&#xff1a;使用selectpicker组件&#xff0c;可多选 { field: travel_agency, title:__(Travel_agency),addClass:"selectpicker", operate:"IN",data:"multiple", searchList:…...

.NET未来路在何方?

简述 在软件开发的漫长旅程中&#xff0c;将代码打包成可执行的EXE文件是一项必不可少的技能。它不仅能够保护源代码&#xff0c;还能为用户提供便捷的安装体验。但手动打包过程繁琐且容易出错&#xff0c;自动化打包成为了开发者的福音。 在软件开发的浩瀚星空中&#xff0c;.…...

Vue开发环境搭建

文章目录 引言I 安装NVM1.1 Windows系统安装NVM,实现Node.js多版本管理1.2 配置下载镜像1.3 NVM常用操作命令II VUE项目的基础配置2.1 制定不同的环境配置2.2 正式环境隐藏日志2.3 vscode常用插件引言 开发工具: node.js 、npm 开发编辑器:vscode 开发框架:VUE I 安装NVM…...

【数据结构初阶】详解:实现循环队列、用栈实现队列、用队列实现栈

文章目录 一、循环队列1、题目简述2、方法讲解2.1、了解tail的指向2.2、了解空间是如何利用的2.3、如何判断队列是否为空&#xff08;假溢出问题&#xff09;&#xff1f;2.4、实现代码 二、用栈实现队列1、题目简述2、方法讲解2.1、讲解2.2、实现代码 三、用队列实现栈1、题目…...

【Hot100】LeetCode—31. 下一个排列

目录 题目1- 思路2- 实现⭐31. 下一个排列——题解思路 3- ACM 实现 题目 原题连接&#xff1a;31. 下一个排列 1- 思路 技巧题&#xff0c;分为以下几个步骤 ① 寻找拐点&#xff1a; i 1 &#xff1a;出现 nums[i1] > nums[i] &#xff0c;则 i 1 就是拐点 从右向左遍…...

找到学习的引擎,更让你进入心流状态的高效学习

一、心流状态的启动秘籍 1. 简单开始&#xff1a;找到学习的入口 从简单的任务开始&#xff0c;比如整理学习空间或列出学习计划&#xff0c;让大脑逐渐适应学习的节奏。 2. 环境塑造&#xff1a;打造专注的学习空间 清理桌面&#xff0c;减少干扰&#xff0c;比如将手机置…...

QItemDelegate QItemDelegate QItemDelegate

qtreeview点击某一行有颜色显示 c 在Qt中&#xff0c;要实现QTreeView点击某行有颜色显示&#xff0c;可以通过设置QTreeView的itemDelegate来自定义显示样式。以下是一个简单的例子&#xff0c;演示如何为QTreeView的项设置点击时的背景颜色。 #include <QApplication>…...

MySQL数据库 外键默认约束和action 基础知识【2】推荐

数据库就是储存和管理数据的仓库&#xff0c;对数据进行增删改查操作&#xff0c;其本质是一个软件。MySQL就是一种开源的关系型数库&#xff0c;也是最受欢迎的数据库之一&#xff0c;今天对MySQL数据的基础知识做了整理&#xff0c;方便自己查看&#xff0c;也欢迎正在学习My…...

手把手教你:没有ST-LINK,如何用USB给STM32烧录程序(DFU模式保姆级教程)

零成本玩转STM32&#xff1a;USB-DFU模式烧录全攻略 当你深夜调试STM32项目时&#xff0c;突然发现手边没有ST-LINK&#xff0c;而快递至少要等三天——这种场景我经历过太多次。直到发现DFU模式这个隐藏技能&#xff0c;所有问题迎刃而解。本文将分享如何仅用一根USB线完成固件…...

Awesome List Creator:基于规则引擎的自动化资源清单生成工具

1. 项目概述&#xff1a;一个清单的“引擎”在信息过载的时代&#xff0c;无论是开发者寻找工具库&#xff0c;还是学习者梳理知识体系&#xff0c;一份结构清晰、内容精选的“Awesome List”&#xff08;优质资源清单&#xff09;都堪称无价之宝。然而&#xff0c;维护一份高质…...

终极指南:快速掌握碧蓝航线Live2D资源提取技术

终极指南&#xff1a;快速掌握碧蓝航线Live2D资源提取技术 【免费下载链接】AzurLaneLive2DExtract OBSOLETE - see readme / 碧蓝航线Live2D提取 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneLive2DExtract 在数字内容创作和游戏开发领域&#xff0c;Live2D动…...

2026年AGI突围:自主智能体驱动,数字生命从架构落地到自我迭代全解析

2026年&#xff0c;AI行业正式告别“生成式狂欢”&#xff0c;迈入“自主智能体&#xff08;AI Agent&#xff09;规模化落地元年”。Gartner将自主智能体列为年度十大战略技术趋势之首&#xff0c;各大科技厂商纷纷布局&#xff0c;从实验室概念到产业应用&#xff0c;自主智能…...

AI营销技能库:模块化设计提升Claude Code与智能体工作流效率

1. 项目概述&#xff1a;一个为AI营销工作流设计的技能库如果你正在用Claude Code、Cursor这类AI编程工具做营销、内容创作或增长相关的工作&#xff0c;并且感觉每次都要花大量时间写重复的提示词&#xff0c;或者希望团队能有一套标准化的AI工作流程&#xff0c;那么这个名为…...

2024 Q2全球AI搜索基准测试TOP3结果泄露:Perplexity在长尾专业查询中胜率68.4%,但ChatGPT在模糊意图理解上反超——你的团队该押注哪条技术路径?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;2024 Q2全球AI搜索基准测试TOP3结果深度解读 本季度由MLPerf与AI Index联合发布的AI搜索基准测试&#xff08;SearchBench v2.1&#xff09;覆盖了17个主流模型&#xff0c;在真实网页索引、多跳推理、…...

C++ 入门核心语法|从 Hello World 到基础特性一次性吃透

文章目录前言一、C 第一个程序&#xff1a;Hello World二、命名空间 namespace1. 为什么需要命名空间&#xff1f;2. 命名空间定义规则3. 三种使用方式三、C 输入 & 输出1. 核心对象2. 最大优势四、缺省参数&#xff08;默认参数&#xff09;1. 定义2. 使用方式3. 声明与定…...

从HackRF到USRP B210:我的SDR设备升级之路与真实体验对比

从HackRF到USRP B210&#xff1a;我的SDR设备升级之路与真实体验对比 作为一个长期沉迷于软件定义无线电&#xff08;SDR&#xff09;技术的爱好者&#xff0c;设备的选择往往决定了探索的边界。从最初的HackRF One到如今的USRP B210&#xff0c;这段升级旅程不仅是对硬件性能的…...

Perplexity Stack Overflow查询响应延迟超8秒?紧急修复指南:从token压缩到领域微调的4层加速方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity Stack Overflow查询响应延迟超8秒&#xff1f;紧急修复指南&#xff1a;从token压缩到领域微调的4层加速方案 当Perplexity在Stack Overflow数据源上出现平均响应延迟 > 8s 的告警时&am…...

思考的快与慢:模型的“即时回答”与“深思熟虑”

上一篇文章我们学会了如何“使唤”模型&#xff1a;同步、异步、批量、流式&#xff0c;一通操作下来&#xff0c;你已经是调接口的好手了。但很快你可能会发现一个有意思的现象——同样是回答问题&#xff0c;有时候模型快到几乎零秒响应&#xff0c;有时候却要停顿好几秒甚至…...