LintCode Longest Increasing Continuous Subsequence

原题链接在这里:http://www.lintcode.com/en/problem/longest-increasing-continuous-subsequence/

题目:

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.

题解:

从左向右 若连续递增 就更新 len, 再从右向左 若连续递增 就更新res.

Time Complexity: O(n). Space: O(1).

AC Java:

 1 public class Solution {
 2     public int longestIncreasingContinuousSubsequence(int[] A) {
 3         if(A == null || A.length == 0){
 4             return 0;
 5         }
 6         
 7         int res = 1;
 8         int len = 1;
 9         for(int i = 1; i<A.length; i++){
10             if(A[i] > A[i-1]){
11                 len++;
12             }else{
13                 len = 1;
14             }
15             res = Math.max(res, len);
16         }
17         
18         len = 1;
19         for(int i = A.length-2; i>=0; i--){
20             if(A[i] > A[i+1]){
21                 len++;
22             }else{
23                 len = 1;
24             }
25             res = Math.max(res, len);
26         }
27         
28         return res;
29     }
30 }

 跟上Longest Increasing Continuous subsequence II.

posted @ 2017-02-16 11:32  Dylan_Java_NYC  阅读(286)  评论(0编辑  收藏  举报