最长递增子序列( LIS)

Posted ls-pankong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长递增子序列( LIS)相关的知识,希望对你有一定的参考价值。

 LIS

import java.util.*;
public class Main1{
     
        public static int findLongest(int[] s, int n) {
           int []dp= new int[10001];
           dp[0]=s[0];
           int len=1;
           for(int i=1;i<n;i++){
               int left= 0,right=len-1,mid;
               if(dp[len-1]<s[i])
                   dp[len++]=s[i];
               else{
                   right=len-1;
                   while(left<=right){
                       mid= (left+right)/2;
                       if(dp[mid]<s[i])
                           left=mid+1;
                       else
                           right=mid-1;
                   }
                   dp[left]=s[i];
               }
           }
            return len;
        }
    public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            while(sc.hasNext()){
                int n=sc.nextInt();
                int[] A=new int[n];
                for(int i=0; i<n; i++){
                    A[i]=sc.nextInt();
                }
            int res=findLongest(A, n); 
//                int res=n-max+1;
                System.out.println(res);
            }
     
        }
     
    }

 

以上是关于最长递增子序列( LIS)的主要内容,如果未能解决你的问题,请参考以下文章

[51Nod 1218] 最长递增子序列 V2 (LIS)

LeetCode刷题 最长递增子序列

算法--字符串:最长递增子序列LIS

求解最长递增子序列(LIS) | 动态规划(DP)+ 二分法

动态规划之最长递增子序列(LIS)

[Mdp] lc673. 最长递增子序列的个数(LIS+算法优化+算法拓展)