java 增长最快的子序列

Posted

tags:

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

import java.util.*;
public class LongestSequence {
    public static void main(String args[]) {
        LongestSequence longestSequence = new LongestSequence();
        int[][] input = {
          null,
          {},
          {2,6,3,4,1,2,9,5,8},
          {0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15}
        };
        
        for(int i=0; i< input.length; i++) {
            System.out.println("Input: " + Arrays.toString(input[i]) + " Result: " + Arrays.toString(longestSequence.find(input[i])));
        }
    }
    
    private int[] find(int[] input) {
        if(input == null || input.length < 1) {
            return new int[0];
        }
        int[] tracker = new int[input.length];
        int maxLen = 0;
        Arrays.fill(tracker, 1);
        
        for(int i=0; i<input.length; i++){
            for(int j=0; j<=i; j++){
                if(input[j] < input[i] && tracker[i] < tracker[j] + 1) {
                    tracker[i] = tracker[j]+1;
                    maxLen = Math.max(tracker[i], maxLen);
                }
            }
        }
        return findSequence(tracker, input, maxLen);
    }
    
    private int[] findSequence(int[] tracker,int[] input, int maxLen) {
        int[] result = new int[maxLen];
        int j=maxLen-1;
        for(int i=tracker.length-1; i>=0;i--) {
            if(tracker[i] == maxLen){
               result[j--]= input[i];
               maxLen--;
            }
        }
        return result;
    }
}

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

c_cpp 增长最快的子阵列

674. Longest Continuous Increasing Subsequence 最长连续增长的子序列

Java中最快的子字符串搜索方法是啥

Java中可序列化文件的最快压缩

Java中哪个JSON库的解析速度是最快的

nowcoder-练习赛16