参考资料:https://blog.nowcoder.net/n/1b12147d7180429da922d2bdfc160192
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static int upperBound(List<Integer> arr,int target){
int low=0;
int high=arr.size();
while(low<high){
int mid=low+(high-low)/2;
if(arr.get(mid)>target){
high=mid;
}else{
low=mid+1;
}
}
return low;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=in.nextInt();
}
List<Integer> list=new ArrayList<>();
list.add(a[0]);
for(int i=1;i<n;i++){
if(a[i]>=list.get(list.size()-1)){
list.add(a[i]);
}else{
int pos=upperBound(list,a[i]);
list.set(pos,a[i]);
}
}
System.out.println(list.size());
}
}

京公网安备 11010502036488号