首页 > 解决方案 > NIce Subsequence - 最长递增子序列的变体

问题描述

如果所有 i > 2 的 X[i] > X[i - 2],则子序列 X[1..k] 是好的。计算任意整数数组 A[1...n] 的最长好的子序列。
我对这个问题陈述有些困惑,因为没有提供示例。

我举了一个示例数组:A = { 1,2,3,4,2,-1,0,7,9}。
我以迭代方式进行了元素比较:3 > 1,在输出数组中包含 3。4 > 2,包括 4,依此类推。

根据我对这个问题的理解,我想出了这个很好的子序列:{3,4,7,9}。我很困惑,如果子序列中包含元素 1 和 2,因为我认为 {1,2,3,4,7,9} 也是有效的。我需要消除这种困惑。
任何帮助深表感谢。
下面是我编写的 Java 代码。

public static int niceSub(int[] input) {
        int n = input.length;
        int i, j;
        int[] X = new int[n];

        for (i = 0; i < n; i++) {
            X[i] = 0;
        }
        ArrayList<Integer> answer = new ArrayList<>();
        int[] A = new int[n + 1];
        A[0] = 0;
        for (i = 1; i <= n; i++) {
            A[i] = input[i - 1];
        }
        for (i = 3; i < A.length; i++) {
            for (j = i - 2; j <= i - 2; j++) {
                if (A[i] > A[j]) {
                    answer.add(A[i]);
                }
            }
        }
        System.out.println(answer);
        // System.out.println(Arrays.toString(X));
        return answer.size();
    }

标签: algorithmmathsubsequence

解决方案


推荐阅读