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

全球军事新闻网站免费的网络推广渠道

全球军事新闻网站,免费的网络推广渠道,漯河网站建设服务公司,响应式的学校网站一、最长公共子序列 1143. 最长公共子序列 (一)灵茶山艾府 最长公共子序列 编辑距离【基础算法精讲 19】 定义:D[i][j]表示text1的前i个字符和text2的前j个字符的LCS。 然后需要考虑两个问题: 因此得到递推式: …

一、最长公共子序列

1143. 最长公共子序列

(一)灵茶山艾府

最长公共子序列 编辑距离【基础算法精讲 19】

定义:D[i][j]表示text1的前i个字符和text2的前j个字符的LCS。

然后需要考虑两个问题:

因此得到递推式:

(二)邋遢大哥233

[轻松掌握动态规划]5.最长公共子序列 LCS

最终代码:

class Solution {
public:int longestCommonSubsequence(string text1, string text2) {int n = text1.size();int m = text2.size();vector<vector<int>> f(n + 1, vector<int>(m + 1, 0));for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (text1[i - 1] == text2[j - 1])f[i][j] = f[i - 1][j - 1] + 1;elsef[i][j] = max(f[i - 1][j], f[i][j - 1]);}}return f[n][m];}
};

复杂度分析

  • 时间复杂度:O(nm)。
  • 空间复杂度:O(nm)。

降维后(滚动数组):

class Solution {
public:int longestCommonSubsequence(string text1, string text2) {int n = text1.size();int m = text2.size();vector<int> f(m + 1, 0);for (int i = 1; i <= n; i++) {int temp = 0; // 保存f[i-1][j-1]for (int j = 1; j <= m; j++) {int pre = f[j]; // 保存这一行的f[j]方便作为左上角if (text1[i - 1] == text2[j - 1])f[j] = temp + 1;elsef[j] = max(f[j], f[j - 1]);temp = pre; // 成为下一行的左上角}}return f[m];}
};

复杂度分析

  • 时间复杂度:O(nm)。
  • 空间复杂度:O(m)。

二、编辑距离

 72. 编辑距离

代码:

class Solution {
public:int minDistance(string word1, string word2) {int n = word1.size();int m = word2.size();vector<vector<int>> f(n + 1, vector<int>(m + 1, 0));for (int i = 0; i <= m; i++)f[0][i] = i;for (int i = 0; i <= n; i++)f[i][0] = i;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (word1[i - 1] != word2[j - 1])f[i][j] =min(min(f[i - 1][j], f[i][j - 1]), f[i - 1][j - 1]) + 1;elsef[i][j] = f[i - 1][j - 1];}}return f[n][m];}
};

复杂度分析

  • 时间复杂度:O(nm),其中 n 为 s 的长度,m 为 t 的长度。
  • 空间复杂度:O(nm)。

降维后(滚动数组):

class Solution {
public:int minDistance(string word1, string word2) {int n = word1.size();int m = word2.size();vector<int> f(m + 1, 0);for (int i = 0; i <= m; i++)f[i] = i;for (int i = 1; i <= n; i++) {int pre = f[0]; // pre 保存 f[i-1][j-1],初始为 f[i-1][0] = i-1f[0] = i;       // 更新当前行的 f[i][0] = ifor (int j = 1; j <= m; j++) {int temp = f[j]; // 保存本次f[j],方便保留为左上角if (word1[i - 1] != word2[j - 1])f[j] = min(min(f[j], f[j - 1]), pre) + 1;elsef[j] = pre;pre = temp; // pre成为左上角}}return f[m];}
};

易错点:

int pre = f[0]; // pre 保存 f[i-1][j-1],初始为 f[i-1][0] = i-1
f[0] = i;       // 更新当前行的 f[i][0] = i
  1. 降维后,每行的f[0](最左边一列)也是要随时更新的。
  2. 而pre要履行它的职责就是保存左上角的数,而对于每一行刚开始的时候,就是保存f[0]。

复杂度分析

  • 时间复杂度:O(nm)。
  • 空间复杂度:O(m)。
http://www.dtcms.com/wzjs/74995.html

相关文章:

  • 营销网站建设的因素互联网广告代理可靠吗
  • 韩城网站建设爱站网站
  • 高级网站开发工程师证网站快速优化排名排名
  • 安庆注册公司广州seo排名外包
  • wordpress类目urlaso优化{ }贴吧
  • 成都网站建设新线加中国站长工具
  • 公众号文案里怎么做网站链接软文营销策划方案
  • 一站式建设网店运营公司
  • 做网站的平台有哪些网页在线代理翻墙
  • 网站扫码怎么做昆山网站建设推广
  • 怎么做网站销售站长之家关键词挖掘
  • 苏州网站营销公司墨猴seo排名公司
  • 变身小说网址wordpress郑州seo技术服务
  • 新媒体营销的发展趋势自然搜索优化
  • ps做网站设计稿热搜榜百度一下你就知道
  • 铜山区建设局局网站上海优化关键词的公司
  • 视频网站怎么搭建免费培训机构管理系统
  • 温州seo全网营销宁波做seo推广企业
  • 霸气又聚财的公司名称泰州seo
  • 做网站后台需要写代码吗杭州搜索引擎排名
  • 放在主机上的网站程序如何建压缩包然后直接下载完整的社群营销方案
  • 高校网站建设滞后推广普通话手抄报句子
  • 高端网站建设 磐石网络专注百度搜索推广收费标准
  • 织梦 图片网站源码怎么创建一个网址
  • 网上做赌博网站吗南京seo网络推广
  • 大良营销网站建设好么健康码防疫核验一体机
  • 高权重网站做员会来顶排名高端营销型网站制作
  • 建网站流程四年级新闻摘抄大全
  • 工业设计网站设计城市分站seo
  • 天津住房和城乡建设部网站百度收录规则