//最长递增子序列的优化——时间复杂度为O(nlogn)
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
const int MAXN = 1000+10;
const int INF = INT_MAX;
int support[MAXN];
int arr[MAXN];
int main() {
int n;
support[0] = -INF;
for(int i = 0;i<n;i++) {
scanf("%d",&arr[i]);
}
int length = 0;
for(int i = 0;i<n;i++) {
if(support[length]<arr[i]) {
length++;
support[length] = arr[i];
} else {
int position = lower_bound(support,support+length,arr[i])-support;//系统自带的二分查找函数
support[position] = arr[i];
}
}
printf("%d\n",length);
return 0;
}
最长递增子序列的优化——时间复杂度为O(nlogn)
最新推荐文章于 2023-09-20 10:10:15 发布