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

Solution

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;
}
}