用dp 的方法,注意的是,F[I] 这个状态是以i作为结尾的最长的子序列。最后是取所有状态的最大值。
class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
int m(nums.size());
if(!m) return 0;
vector<int> res(m,1);
int max_num(nums[0]);
for(int i = 1; i < m; i++){
for(int j = 0; j < i; j++)
if(nums[i]>nums[j]){
res[i] = max(res[j] +1, res[i]);
//max_num = nums[i];
}
}
return *max_element(res.begin(), res.end());
}
};