1:300:https://leetcode-cn.com/problems/longest-increasing-subsequence/
题目:
思路:两重for循环遍历,比较i之前的数字j(0<j<i),如果nums[j] < nums[i] 则比较dp[i],dp[j]+1的大小从而更新dp;
代码:
2:334:https://leetcode-cn.com/problems/increasing-triplet-subsequence/
题目:
思路:基本同上一题300,反而更简单了,只要dp[i]>=3就可以返回true了
代码:
3:1048:https://leetcode-cn.com/problems/longest-string-chain/
题目:
思路:先按字符串长度大小,从小到大排列,然后就可以就基本同上一题一样,i,j(0<j<i),比较w了
代码:

3:1048:https://leetcode-cn.com/problems/longest-string-chain/
题目:

思路:先按字符串长度大小,从小到大排列,然后就可以就基本同上一题一样,i, j(0<j<i),判断words[j],是不是words[i]的子串,是则比较dp[i],dp[j]+1的大小关系,更新dp[i],至于怎么判断谁是谁的字串,很简单,直接上代码
代码:
4:1027:https://leetcode-cn.com/problems/longest-arithmetic-sequence/
题目:
思路:这个稍微有些变化,因为要同时存储等差gap,以及目前位置这个等差位gap的数列的长度,所以用到map,具体代码里会有注解。
代码:
收获:总结代码套路:
for(int i;i<n;i++){
for(int j=0;j<i;j++){
if(一定条件)
dp[i] = max(dp[i],dp[j]+1);//更新dp
}
}