代码随想录算法训练营第四十三天|leetcode300.最长递增子序列、leetcode674. 最长连续递增序列、leetcode718. 最长重复子数组
1 leetcode300.最长递增子序列
题目链接:300. 最长递增子序列 - 力扣(LeetCode)
文章链接:代码随想录
视频链接:动态规划之子序列问题,元素不连续!| LeetCode:300.最长递增子序列_哔哩哔哩_bilibili
思路:就是没思路,嗯,感觉这一块为了赶进度,自己刷题没有那么的认真,呜呜呜呜呜,希望以后可以扎实一点吧
1.1 视频后的思路
怎么说呢,其实取result的原因,是因为可能包含最后一个数的长度,比之前的长度短,导致错误才取的,自己实验后的结果
class Solution:
def lengthOfLIS(self, nums: List[int]) -> int:
dp = [1]*(len(nums))
dp[0] = 1
result = 0
for i in range(len(nums)):
for j in range(i):
if nums[j]<nums[i]:
dp[i] = max(dp[i],dp[j]+1)
result = max(result,dp[i])
return result
1.2 本题小结
- 这个主要是不知道dp[i]的含义,后来不是很明白为什么要取一个最大的结果,直到自己在实验的时候,就立刻举了一个反例,我就明白了这一点
- 又是一种新的定义方式,其实这种在之前也学习过啦
2 leetcode674. 最长连续递增序列
题目链接:674. 最长连续递增序列 - 力扣(LeetCode)
文章链接:代码随想录
视频链接:动态规划之子序列问题,重点在于连续!| LeetCode:674.最长连续递增序列_哔哩哔哩_bilibili
思路:看了以后,只是觉得肯定跟上一题差不多,但是怎么改呢,我就有点迷惑,当时自己看的时候,然后就看了一下解析
2.1 题解后的思路
看了视频以后,发现dp[i]的值其实是一定的,就是结果的最长数组,这里需要判断一下
class Solution:
def findLengthOfLCIS(self, nums: List[int]) -> int:
if len(nums)==1:
return 1
dp = [1] *len(nums)
dp[0] = 1
result = 0
for i in range(1,len(nums)):
if nums[i]>nums[i-1]:
dp[i] = dp[i-1]+1
result = max(dp[i],result)
return result
2.2 本题小结
- 就是说,现在就感觉,每次到了判断的位置,不知道递推公式到底怎么写,确实会迷惑的地方
- 这道题,开始偷懒,没有对长度进行判断输出,结果就错了
3 leetcode718. 最长重复子数组
题目链接:718. 最长重复子数组 - 力扣(LeetCode)
文章链接:代码随想录
视频链接:动态规划之子序列问题,想清楚DP数组的定义 | LeetCode:718.最长重复子数组_哔哩哔哩_bilibili
思路:就是说,两个数组,就会不知道怎么来做了
3.1 视频后的思路
想到了定义二维的dp数组,但是说实话还是会有点不知道内部含义是什么,就没写
class Solution:
def findLength(self, nums1: List[int], nums2: List[int]) -> int:
dp = [[0]*(len(nums2)+1) for _ in range((len(nums1)+1))]
result = 0
for i in range(1,len(nums1)+1):
for j in range(1,len(nums2)+1):
if nums1[i-1]==nums2[j-1]:
dp[i][j] = dp[i-1][j-1]+1
result = max(dp[i][j],result)
return result
3.2 本题小结
- 本题要注意的两个点,一是行和列的区分吧
- 就是dp的含义,就是不是很理解吧,继续学习吧
4 今日小结
- 还是dp的定义以及dp的递推公式怎么写,两部分需要逐步的加强吧
- 今天是酷酷酷的往后补,感觉效率都提升了不少
- 就是基础不是那么扎实,希望还是多去看看,多去写写吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?