最长递增子序列(LIS)

使用数组len来记录前i个元素最长子序列的长度,因此
len[i+1]=max{1,len[k]+1},arr[i+1]>arr[k],for any k<=i;

public static int get(int[] data) {  
        int[] len = new int[data.length];// 记录最长信息  
        for (int i = 0; i < len.length; i++) {  
            len[i] = 1;  
        }  
        for (int i = 0; i < data.length; i++) {  
            for (int j = i - 1; j >= 0; j--) {  
                if (data[i] > data[j] && len[i] < len[j] + 1) {  
                    len[i] = len[j] + 1;  
                }  
            }  
        }  
        int max = -1;  
        for (int i = 0; i < len.length; i++) {  
            if (max < len[i]) {  
                max = len[i];  
            }  
        }  
        return max;  
    }  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容