java_ day9

目标:Java web开发

问题:最长上升子序列

import java.util.*;
public class Main{
    static Scanner sc=new Scanner(System.in);
    static int N=100010;
    //写法一:
    static int a[]=new int[N],q[]=new int[N];
    //写法二:
    // static int[] a=new int[N],q=new int[N];
    public static void main(String args[]){
        int n=sc.nextInt();
        for(int i=0;i<n;i++) a[i]=sc.nextInt();
        int len=0;
        for(int i=0;i<n;i++){
            int l=0,r=len;
            while(l<r){//排队,最适合的在最前,实时更新
                int mid=l+r+1>>1;
                if(q[mid]<a[i]) l=mid;
                else r=mid-1;
            }
            len=Math.max(len,r+1);
            q[r+1]=a[i];
        }
        System.out.println(len);
    }
}
上一篇:Day9---学习Java第三弹


下一篇:Day9:构造方法,字符串