题解 | #最长上升子序列(一)#
最长上升子序列(一)
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;
}
};

