LintCode刷题——最长上升连续子序列

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
    }
}


猜你喜欢

转载自blog.csdn.net/kingslave1/article/details/78073887