力扣刷题
文章平均质量分 52
力扣的一些刷题题解
urlyy_
悟已往之不谏,知来者之可追。
展开
-
力扣刷题---1143. 最长公共子序列
1143. 最长公共子序列 解题思路 先谈谈最基本的二维的做法 状态转移方程: 当(s1[i]==s2[j])//这里不需要取最大值是因为这个值就已经是当前可取到的最大值了 dp[i][j]=dp[i-1][j-1]+1 当(s1[i]!=s2[j])//一个i-1,一个j-1,意思就是得到当前取到的s1和s2的两个子串的公共子序列长度的最大值,算是得到小状态的最优解了 dp[i][j]=max(dp[i-1][j],dp[i][j-1]); 然后再谈谈这里可以用到的滚动数组 我们可以发现 在原创 2021-09-12 23:08:51 · 154 阅读 · 0 评论 -
力扣刷题---143.重排链表
143. 重排链表 解题思路 主要算法:递归 题意就是把一条方向是从左向右的单链表变成下图这种螺旋状 可以发现对于所有弧,弧尾的结点是从左向右的,弧头的结点是从右向左的, 于是可以考虑双指针,一个放在弧尾结点,一个放在弧头结点 但是单链表不能让指针往前,于是考虑递归 用递归使指针回到之前的结点 这里采用了规定指向弧头的指针递归起始时的结点位置,以方便递归的结束 然后对于链表奇偶长度,进行了不同的边际特判(还没仔细考虑过能否合二为一) 代码 /** * Definition for singly-l原创 2021-09-12 21:36:27 · 220 阅读 · 0 评论