300. Longest Increasing Subsequence

来源:互联网 发布:手机word阅读软件 编辑:程序博客网 时间:2024/06/04 15:29
//124msclass 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;    }};
//4msclass 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();    }};
0 0
原创粉丝点击