题解 | #最长上升子序列(一)#
最长上升子序列(一)
https://www.nowcoder.com/practice/5164f38b67f846fb8699e9352695cd2f
#include <vector> class Solution { public: int LIS(vector<int>& arr) { int len = arr.size(); if (!len) return len; vector<int> dp(len, 1); //记录以i位置结尾的最长上升子序列的长度 int res = 1, tmp; for (int i = 1; i < len; i++) { for (int j = 0; j < i; j++) { if (arr[i] > arr[j] && dp[i] < dp[j] + 1) { dp[i] = dp[j] + 1; res = dp[i] > res ? dp[i] : res; } } } return res; } };