一、LintCode链接
二、问题描述
给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。)
三、关键点分析
- 连续上升,从左到右或从右到左
- 最长
- 不考虑相邻数据相等
四、解决思路(Java)
public int longestIncreasingContinuousSubsequence(int[] A) {
if (A == null) {
return 0;
}
if (A.length <= 2) {
return A.length;
}
int maxLength = 2;
int currentLength = 2;
for (int i = 2; i < A.length; i++) {
if (A[i - 2] < A[i - 1] && A[i - 1] < A[i]
|| A[i - 2] > A[i - 1] && A[i - 1] > A[i]) {
currentLength++;
} else {
maxLength = Math.max(maxLength, currentLength);
currentLength = 2;
}
}
maxLength = Math.max(maxLength, currentLength);
return maxLength;
}
网友评论