版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kingslave1/article/details/78073887
问题描述:
给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。)
样例:
给定 [5, 4, 2, 1, 3]
, 其最长上升连续子序列(LICS)为 [5, 4, 2, 1]
, 返回 4
.
给定 [5, 1, 2, 3, 4]
, 其最长上升连续子序列(LICS)为 [1, 2, 3, 4]
, 返回 4
.
解决:
public class Solution {
/*
* @param : An array of Integer
* @return: an integer
*/
public int longestIncreasingContinuousSubsequence(int[] array) {
if(array.length==0){
return 0;
}
int increasingResult=1;
int unicreasingResult=1;
int currentIncreasingResult=1;
int currentUnicreasingResult=1;
for(int i=1;i<array.length;i++) {
//最长连续递增
if(array[i]>array[i-1]) {
currentIncreasingResult++;
}else {
currentIncreasingResult=1;
}
increasingResult=Integer.max(increasingResult, currentIncreasingResult);
//最长连续递减
if(array[i]<array[i-1]) {
currentUnicreasingResult++;
}else {
currentUnicreasingResult=1;
}
unicreasingResult=Integer.max(unicreasingResult, currentUnicreasingResult);
}
return unicreasingResult>increasingResult?unicreasingResult:increasingResult;
}
}