⼦序列问题是不连续的序列,⽽子串,数组是连续的
⼀般来说,⼦序列问题都是让你求⼀个最⻓⼦序列,因为最短⼦序列就是⼀个字符嘛,没啥可问的。⼀旦涉及到⼦序列和最值,那⼏乎可以肯定,考察的是动态规划技巧,时间复杂度⼀般都是 O(n^2)
定义 dp 数组,找状态转移关系。
我们说的两种思路模板,就是 dp 数组的定义思路。
1、第⼀种思路模板是⼀个⼀维的 dp 数组:
「最⻓递增⼦序列」,在这个思路中 dp 数组的定义是:
在⼦数组 array[0…i] 中,我们要求的⼦序列(最⻓递增⼦序列)的⻓度是 dp[i]
int n = array.length;
int[] dp = new int[n];