领扣LintCode算法问题答案-397. 最长上升连续子序列

领扣LintCode算法问题答案-397. 最长上升连续子序列

目录

  • 397. 最长上升连续子序列
  • 鸣谢

397. 最长上升连续子序列

给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。)

样例 1:

输入:[5, 4, 2, 1, 3]
输出:4
解释:
给定 [5, 4, 2, 1, 3],其最长上升连续子序列(LICS)为 [5, 4, 2, 1],返回 4。

样例 2:

输入:[5, 1, 2, 3, 4]
输出:4
解释:
给定 [5, 1, 2, 3, 4],其最长上升连续子序列(LICS)为 [1, 2, 3, 4],返回 4。

public class Solution {
     
    /**
     * @param A: An array of Integer
     * @return: an integer
     */
    public int longestIncreasingContinuousSubsequence(int[] A) {
     
        // write your code here
        if (A.length == 1) {
     
            return 1;
        }
        
        int ret = 0;
        int startRIndex = 0;
        int startDIndex = 0;

        for (int i = 1; i < A.length; i++) {
     
            int lNum = A[i - 1];
            int cNum = A[i];
            if (cNum > lNum) {
     
                // rise
                if (i - startDIndex > ret) {
     
                    ret = i - startDIndex;
                }
                startDIndex = i;
            } else {
     
                // decline
                if (i - startRIndex > ret) {
     
                    ret = i - startRIndex;
                }
                startRIndex = i;
            }
        }
        
        if (startDIndex < startRIndex) {
     
            // rise
            if (A.length - startDIndex > ret) {
     
                ret = A.length - startDIndex;
            }
        } else {
     
            // decline
            if (A.length - startRIndex > ret) {
     
                ret = A.length- startRIndex;
            }
        }
        
        return ret;
    }
}

原题链接点这里

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

你可能感兴趣的:(算法,算法)