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

LeeCode Practice Journal | Day44_DP11 子序列问题

1143. 最长公共子序列

题目:1143. 最长公共子序列 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)

solution
public class Solution {public int LongestCommonSubsequence(string text1, string text2) {int m = text1.Length;int n = text2.Length;   int[,] dp = new int[m,n];int result = 0;for(int i = 0; i < m; i++){for(int j = 0; j < n; j ++){if(i == 0 && j == 0) dp[0,0] = text1[0] == text2[0] ? 1 : 0;else if(i == 0) dp[0, j] = text1[0] == text2[j] ? 1 : dp[0, j - 1];else if(j == 0) dp[i, 0] = text1[i] == text2[0] ? 1 : dp[i - 1, 0];else{if(text1[i] == text2[j]) dp[i, j] = dp[i-1,j-1] + 1;else dp[i,j] = Math.Max(dp[i-1, j], dp[i, j-1]); }result = Math.Max(result, dp[i,j]);}}return result;}
}
summary

错误:

1、思路:
dp[i,j] : 以text1[ i ],text2[ j ]结尾的???很奇怪的思路

dp:

1、dp[ i ][ j ]:text1 0-i 子串和text2 0-j 子串的最长公共子序列

2、递推:
text1[ i ] == text2[ j ]:dp[ i-1 ][ j-1 ] + 1
text1[ i ] != text2[ j ]:Math.Max(dp[ i ][ j-1 ] , dp[ i-1 ][ j ])

3、初始化
初始化第一行和第一列

1035. 不相交的线

题目:1035. 不相交的线 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)
和上题完全一致

solution
public class Solution {public int MaxUncrossedLines(int[] nums1, int[] nums2) {int m = nums1.Length;int n = nums2.Length;   int[,] dp = new int[m,n];int result = 0;for(int i = 0; i < m; i++){for(int j = 0; j < n; j ++){if(i == 0 && j == 0) dp[0,0] = nums1[0] == nums2[0] ? 1 : 0;else if(i == 0) dp[0, j] = nums1[0] == nums2[j] ? 1 : dp[0, j - 1];else if(j == 0) dp[i, 0] = nums1[i] == nums2[0] ? 1 : dp[i - 1, 0];else{if(nums1[i] == nums2[j]) dp[i, j] = dp[i-1,j-1] + 1;else dp[i,j] = Math.Max(dp[i-1, j], dp[i, j-1]); }result = Math.Max(result, dp[i,j]);}}return result;}
}

53. 最大子序和

题目:53. 最大子数组和 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)

solution
public class Solution {public int MaxSubArray(int[] nums){int n = nums.Length;int[,] dp = new int[n,2];dp[0,0] = nums[0];dp[0,1] = nums[0];for(int i = 1; i < n; i ++){dp[i, 0] = Math.Max(dp[i-1, 0], dp[i-1, 1]);dp[i, 1] = Math.Max(dp[i-1, 1] + nums[i], nums[i]);}return Math.Max(dp[n-1,0], dp[n-1,1]);}
}
summary

dp:

1、dp数组
dp[ i ,0 ]:0-i 子串不包含nums[ i ] 的最大子序和
dp[ i ,1 ]:0-i 子串包含nums[ i ] 的最大子序和

2、递推:
dp[i, 0] = Math.Max(dp[i-1, 0], dp[i-1, 1]);
dp[i, 1] = Math.Max(dp[i-1, 1] + nums[i], nums[i]);

3、初始化:(错误)
dp[0,1] 和 dp[0,0]都要初始化为第一个元素

392. 判断子序列

题目:392. 判断子序列 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)
还是最长公共子序列的变体

solution
public class Solution {public bool IsSubsequence(string s, string t) {int m = t.Length;int n = s.Length;if(n == 0) return true;if(m == 0) return false;int[,] dp  = new int[m, n];for(int i = 0; i < m; i ++){for(int j = 0; j < n; j ++){if(i == 0 && j == 0) dp[0,0] = t[i] == s[j] ? 1 : 0;else if(i == 0 && j != 0) dp[0,j] = t[0] == s[j] ? 1 : dp[0, j-1];else if(j == 0 && i != 0) dp[i,0] = t[i] == s[0] ? 1 : dp[i-1, 0];else{if(t[i] == s[j]) dp[i,j] = dp[i-1, j-1] + 1;else dp[i,j] = Math.Max(dp[i-1, j], dp[i, j-1]);}}}return dp[m-1, n-1] == s.Length;}
}
summary

错误:

要判断两个字符串长度。。。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 案例分享—国外毛玻璃效果UI设计案例
  • UE5学习笔记11-为拿取武器添加动画
  • 派森学长带你学python—集合
  • 爬虫 Web Js 逆向:RPC 远程调用获取加密参数(1)WebSocket 协议介绍
  • C++简单界面设计
  • 【初阶数据结构】通讯录项目(可用作课程设计)
  • 突破传统看车局限,3DCAT实时云渲染为东风日产奇骏赋能
  • Django 安装指南
  • ui自动化难点
  • UE5学习笔记9-创建一个小窗口提示人物是否和武器重叠
  • 【人工智能】Transformers之Pipeline(十):视频分类(video-classification)
  • C语言常用的数据结构
  • Python | Leetcode Python题解之第331题验证二叉树的前序序列化
  • PPPoE基础笔记
  • String 事务
  • 收藏网友的 源程序下载网
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • CentOS 7 防火墙操作
  • Docker下部署自己的LNMP工作环境
  • ES6 学习笔记(一)let,const和解构赋值
  • Java深入 - 深入理解Java集合
  • PHP那些事儿
  • vuex 学习笔记 01
  • vue数据传递--我有特殊的实现技巧
  • 类orAPI - 收藏集 - 掘金
  • 力扣(LeetCode)22
  • 软件开发学习的5大技巧,你知道吗?
  • 数据结构java版之冒泡排序及优化
  • scrapy中间件源码分析及常用中间件大全
  • # Redis 入门到精通(一)数据类型(4)
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (十六)Flask之蓝图
  • (算法)区间调度问题
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .stream().map与.stream().flatMap的使用
  • /var/lib/dpkg/lock 锁定问题
  • ::before和::after 常见的用法
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • [ Linux ] Linux信号概述 信号的产生
  • [.NET]桃源网络硬盘 v7.4
  • [100天算法】-x 的平方根(day 61)
  • [20170728]oracle保留字.txt
  • [Android] 修改设备访问权限
  • [BUG]vscode插件live server无法自动打开浏览器