#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<cstdio>
using namespace std;
#define REP(i, n) for(int i=0;i<n;i++)
class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
if(nums.size()==0)
return 0;
vector<int> len(nums.size(), 0);
len[0]=nums[0];
int max_len = 0;
for(int i=1;i<nums.size();i++)
{
vector<int>::iterator iter=lower_bound(len.begin(), len.begin() + max_len + 1, nums[i]);
if(iter==len.begin() + max_len + 1)
{
max_len++;
len[max_len]=nums[i];
} else
{
*iter=nums[i];
}
}
return max_len + 1;
}
};
最长上升子序列
最新推荐文章于 2020-07-18 20:54:02 发布