小白学Java
Java后端
·04-27 23:16
Day 101 ✅ 今天做了: 1. 力扣1143,最长公共子序列 2. 复习msyql八股 3. 零代码生成平台项目进度+2(41/41)完结! ⏰ 明天计划: 1. 刷力扣题 2. 复习java八股 3. 编写“零代码平台”设计文档,准备开发 📚 今日感悟: 一、力扣1143,最长公共子序列 1. 我的思路1:动态规划,构造一个二维数组(行列分别是两个字符串的长度+1,默认第0行和第0列填充0方便计算),把这两个字符串当做行和列,如果行元素等于列元素,则选取`dp[i-1][j-1]+1`,否则取`dp[i-1][j]`或者`dp[i][j-1]`中最大长度+1 `时间复杂度O(m*n),空间复杂度O(m*n)` 2. 我的思路2:优化为一维数组,如果行元素等于列元素,`dp[j]=t+1`;否则`dp[j]=max(dp[j-1],dp[j])`(注意,左上角的元素不能通过dp[j]或者dp[j-1]表示,因此要额外维护一个变量用于记录左上角的值dp[j],然后在下一轮使用这个值从而达到左上角的目的) `时间复杂度O(m*n),空间复杂度O(n)`
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP