# Longest Increasing Continuous Subsequence

## Question

Give an integer array，find the longest increasing continuous subsequence in this array.

An increasing continuous subsequence:

Can be from right to left or from left to right.\
Indices of the integers in the subsequence should be continuous.

**Notice**

O(n) time and O(1) extra space.

**Example**

For \[5, 4, 2, 1, 3], the LICS is \[5, 4, 2, 1], return 4.

For \[5, 1, 2, 3, 4], the LICS is \[1, 2, 3, 4], return 4.

**Tags**

Enumeration Dynamic Programming Array

**Related Problems**

Hard Longest Increasing Continuous subsequence II

## Analysis

很直观的思路就是进行两次遍历，第一次从左到右，第二次从右往左，总是检查当前序列是否单调递增，并且记录当前最长的上升序列长度。

Check out the follow up question: [Longest Increasing Continuous subsequence II](https://aaronice.gitbook.io/lintcode/dynamic_programming/longest_increasing_continuous_subsequence_ii)

## Solution

```java
public class Solution {
    /**
     * @param A an array of Integer
     * @return  an integer
     */
    public int longestIncreasingContinuousSubsequence(int[] A) {
        if (A == null || A.length == 0) {
            return 0;
        }

        int ans = 1;
        int N = A.length;

        // From left to right
        int len = 1;
        for (int i = 1; i < N; i++) {
            if (A[i] > A[i - 1]) {
                len++;
            } else {
                len = 1;
            }
            ans = Math.max(len, ans);
        }

        // From right to left
        len = 1;
        for (int i = N - 1; i > 0; i--) {
            if (A[i - 1] > A[i]) {
                len++;
            } else {
                len = 1;
            }
            ans = Math.max(len, ans);
        }

        return ans;
    }
}
```
