LeetCode讲解篇之1143. 最长公共子序列

ops/2024/10/21 9:57:07/

文章目录

  • 题目描述
  • 题解思路
  • 题解代码
  • 题目链接

题目描述

在这里插入图片描述

题解思路

这题我们可以采用动态规划求解,用一个二维数组记录text1的0 ~ i区间子串和text2的0 ~ j区间子串的最长公共子序列的长度,我们假设该二维数组是f
这个数组有一个特性,如果a <= c且b <= d,则f[a][b] <= f[c][d],即我们选择text1或者text2的区间子串变长了,那么此时两个子串的最长公共子序列的长度不会减小

  • 如果text1[i]等于text2[j],则f[i][j] = max(f[i - 1][j - 1] + 1, f[i - 1][j], f[i][j - 1])
  • 如果text1[i]不等于text2[j],则f[i][j] = max(f[i - 1][j], f[i][j - 1])

题解代码

func longestCommonSubsequence(text1 string, text2 string) int {m, n := len(text1), len(text2)f := make([][]int, m + 1)for i := 0; i <= m; i++ {f[i] = make([]int, n + 1)}for i := 0; i < m; i++ {for j := 0; j < n; j++ {if text1[i] == text2[j] {// text1 [0, i]区间内子串与text2 [0,i]区间子串的最长公共子序列的最大值为f[i][j] + 1、f[i][j + 1]、f[i + 1][j],其中f[i][j] + 1大于等于另外两个f[i + 1][j + 1] = f[i][j] + 1} else {// text1 [0, i]区间内子串与text2 [0,i]区间子串的最长公共子序列的最大值为f[i + 1][j]或者f[i][j + 1]f[i + 1][j + 1] = max(f[i + 1][j], f[i][j + 1])}}}return f[m][n]
}

题目链接

https://leetcode.cn/problems/longest-common-subsequence/


http://www.ppmy.cn/ops/123391.html

相关文章

MyBatis之TypeHandler的自定义实现

文章目录 一、TypeHandler概述二、TypeHandler的工作原理1.设置参数&#xff08;Parameter Setting&#xff09;2.获取结果&#xff08;Result Getting&#xff09;3.类型映射和转换规则4.自定义TypeHandler的扩展性 三、自定义的具体实现业务场景分析需求具体实现 一、TypeHan…

数据结构——排序(交换排序)

目录 一、交换排序的总体概念 二、冒泡排序 三、快速排序 1.挖坑法 2.左右指针 3.前后指针 一、交换排序的总体概念 交换排序是一类排序算法&#xff0c;它的核心思想是通过交换元素的位置来达到排序的目的。在排序过程中&#xff0c;比较数组中的元素对&#xff0c;如果…

RTC -

RTC 目录 RTC 回顾 RTC 如何实现RTC制作一个时钟日历 代码编写 rtc.c完整代码 模块开发的步骤&#xff1a; 1、找文档 2、 在文档里面找通信方式&#xff0c;通信过程&#xff08;协议&#xff09; 3、代码> -- 前面学的是模块的开发&#xff0c;串口类&#xff0c;I…

Expectation-Maximization Algorithm(EM算法)

EM算法&#xff08;Expectation-Maximization Algorithm&#xff0c;期望最大化算法&#xff09;是一种迭代优化算法&#xff0c;主要用于在含有隐变量&#xff08;未观测变量&#xff09;或不完全数据的概率模型中&#xff0c;估计参数的最大似然估计&#xff08;Maximum Like…

初学Java基础Day15---面相对象之this,static关键字,静态代码块

一&#xff0c;this关键字 1.概念&#xff1a; 表示本对象 2.理解&#xff1a; 哪个对象调用该方法&#xff0c;该方法里的this就表示该对象 3.作用&#xff1a; 1.this.属性 &#xff1a; 调用本对象的成员属性 2.this.方法 &#xff1a; 调用本对象的成员方法 3.this() : …

初识JAVA

初识Java 1、Java的优点 跨平台&#xff0c;简单&#xff0c;安全&#xff0c;健壮&#xff0c;面向对象 2、Java的核心优势 跨平台 Java的跨平台原理 1、.class:二进制的&#xff0c;结构中立&#xff0c;平台独立&#xff0c;字节编码文件&#xff1a;bytecode。 2、Java跨…

SeaboxSQL

目录 一、基本架构 0、数据模型 1、主从集群 2、分库分表 二、部署安装 1、配置要求 2、前置依赖 3、安装步骤 三、基本操作 1、实例启停 2、命令执行 3、基本查询 4、表空间管理 4、用户管理 6、数据库操作 7、SCHEMA操作 8、表操作 9、日志操作 &…

【JavaEE】——文件IO

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;认识文件 1&#xff1a;文件的概念 2&#xff1a;文件的结构 3&#xff1a;文件路径…