algorithm - 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();
}
解决方案
推荐阅读
- java - 在具有双向支持的 java 中实现 jsonrpc 2.0 的最佳库
- javascript - 为什么使用 Vue 编辑数据不能按预期工作
- spring-boot - 如何使用 Kafka Transaction API 实现一次读取语义?
- android - android mapbox在点击时选择功能
- javascript - 如何用构造函数和子对象声明一个类?
- mysql - 使用 Laravel 检索和编辑页面上的数据
- node.js - 在 node.js 中上传图像会导致文件损坏
- java - Spring 配置文件相对于正在运行的程序的位置
- c++ - 打印时间功能到控制台产生 1
- hadoop - hawq 2.4 的 Hadoop 要求是什么