「最长递增子序列」系列

300. 最长递增子序列

2370. 最长理想子序列

6206. 最长递增子序列 II

 

本周周赛第四题是一道「最长递增子序列」,本篇文章收集了三个「最长递增子序列」系列的题目,从简到繁,循序渐进!!

最长递增子序列

题目详情可见 最长递增子序列

这道题目应该是「最长递增子序列」入门题了,之前也总结过,详情可见 动态规划设计:最长递增子序列 🔥🔥🔥

这里直接给出代码:

最长理想子序列

题目详情可见 最长理想子序列

这道题目也是某次周赛的一道题目,之前也总结过,详情可见 最长理想子序列 🔥🔥🔥

这里直接给出最优代码:

最长递增子序列 II

题目详情可见 最长递增子序列 II

这个题目和「最长理想子序列」简直不要一模一样,除了k的范围大亿点点

先不考虑超时,按照「最长理想子序列」的思路写一波

显然这个时间复杂度为 O(n2)

第二重循环做的事情就是找子序列结尾值在范围[nums[i] - k, nums[i] - 1]中的最大值,怎么才能优化这一个过程内,把时间复杂度从 O(n) 降低到 O(logn)

答案就是线段树,关于线段树的详解可见 线段树详解 🔥🔥🔥

发现是用线段树解决,那么就是直接套模版了,建议仔细阅读「线段树详解」,相信会有不一样的收获

这里是「区间最值」对区间进行「覆盖」的更新操作类型,下面给出代码: