您的位置:首页 > 产品设计 > UI/UE

300. Longest Increasing Subsequence

2016-05-01 14:49 537 查看
//124ms
class Solution {
public:
int lengthOfLIS(vector<int>& n) {
if(n.empty()) return 0;
vector<int> v(n.size(),1);
int m=1;
for(int i=1;i<n.size();i++)
{
for(int j=0;j<i;j++)
{
if(n[j]<n[i]) v[i]=max(v[i],v[j]+1);
}
m=max(m,v[i]);
}
return m;
}
};


//4ms
class Solution {
public:
int lengthOfLIS(vector<int>& n) {
if(n.empty()) return 0;
int len=1;
for(int i=1;i<n.size();i++)
{
if(n[i]<n[len-1])
{
auto it=lower_bound(n.begin(),n.begin()+len,n[i]);
*it=n[i];
}
else if(n[i]>n[len-1])
{
n[len]=n[i];
len++;
}
}
return len;
}
};


class Solution {
public:
int lengthOfLIS(vector<int>& n) {
if(n.empty()) return 0;
vector<int>::iterator m=n.begin();
for(int i=0;i<n.size();i++)
{
auto it=lower_bound(n.begin(),m,n[i]);
*it=n[i];
if(it==m)
m++;
}
return m-n.begin();
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: