求最长递增子序列
程序员文章站
2024-02-24 23:54:34
...
//从下标0开始
int a[maxn];//原数组
int b[maxn];//求得递增数组
int main()
{
int cnt=1;//所求长度
b[0]=a[0];
for(int i=1;i<n;i++){
if(a[i]>b[cnt-1])
b[cnt++]=a[i];
else{
int pos=upper_bound(b,b+cnt,a[i])-b;
b[pos]=min(b[pos],a[i]);
}
}
}
算法时间复杂度:nlog(n)
上一篇: java工具类之实现java获取文件行数
下一篇: 解析Mysql临时表及特点