题解 | #Redraiment的走法#

Redraiment的走法

https://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa

import java.util.Scanner;
import java.util.Arrays;
import java.io.InputStream;
import java.io.PrintStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        InputStream inps=System.in;
        Scanner in = new Scanner(inps);

        String temp=in.nextLine();
        int n=Integer.parseInt(temp);
        temp=in.nextLine();
        try{
            inps.close();
        }catch(IOException e){
            e.printStackTrace();
        }
        in.close();

        String arr[]=temp.split(" ");
        int height[]=new int[n];
        int i=0;
        for(;i<n;++i){
            height[i]=Integer.parseInt(arr[i]);
        }
        
        i=maxStep(height,n);
        PrintStream pt=System.out;
        pt.println(i);
        pt.close();
        
    }
    public static int maxStep(int arr[],int n){
        int i=0;
        int j=0;
        int a[]=new int[n];
        int len[]=new int[n];
        int index=0;
        a[j++]=arr[0];
        len[0]=1;
        for(i=1;i<n;++i){
            if(arr[i]>a[j-1]){
                a[j++]=arr[i];
                len[i]=j;
            }else{
                index=Arrays.binarySearch(a,0,j,arr[i]);
                if(index<0){
                    index=-index-1;
                    a[index]=arr[i];
                }
                len[i]=index+1;
            }
        }

        return j;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务