题目来源
- leetcode
题目描述
题目解析
暴力
要求找到最长的,可以从每个开始,一直向后延伸找到最长的连续上升序列
时间复杂度O(N^2)
动态规划
(1)确定状态:
- 对于最优的策略,一定有最后一个元素
- 第一种情况:最优策略中最长连续上升子序列就是,答案是1
- 第二种情况:
- 子序列长度大于1,那么最优策略中前一个元素肯定是。这种情况一定是
- 因为是最优策略,那么它选中的以
- 子问题:
- 原问题:求结尾的最长连续上升子序列
- 子问题:求结尾的最长连续上升子序列
- 状态:f[j]:以a[j]结尾的最长连续上升子序列的长度
(2)转移方程
(3)初始条件&&边界情况
- 初始条件:空
- 情况2必须满足:
- j >0,即a[j]前面必须至少有一个元素
- a[j] > a[j - 1],满足单调性
(4)计算顺序
- f[0]、f[1]
- 最终答案:最终答案不一定是是最后的字符结尾的,所以答案是max[f[0],f[1]…f[n - 1]]
- 时间&&空间复杂度:Q[n]